Не генерировать более одного идентификатора пользователя при использовании интеграции Google в Swift - PullRequest
0 голосов
/ 28 июня 2018

У меня есть приложение с интеграцией Google, Twitter и Facebook. С Twitter и Facebook проблем нет, но при использовании интеграции с Google всегда возвращается один и тот же идентификатор пользователя.

  func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
    if let error = error
    {
        print("\(error.localizedDescription)")
    }
    else
    {

        let profileUserId = user.userID
        let idToken = user.authentication.idToken
        let fullName = user.profile.name
        let givenName = user.profile.givenName
        let familyName = user.profile.familyName
        let email = user.profile.email

        let urlString : String?
        if user.profile.hasImage
        {
            let pic = user.profile.imageURL(withDimension: 100)
            urlString = appDelegate.serverUrl + "socialsignup?&full_name=\(fullName!)&username=\(givenName!)&email=\(email!)&user_image_name=\(pic!)&google_id=\(profileUserId!)"

        }
        else
        {
            urlString = appDelegate.serverUrl + "socialsignup?&full_name=\(fullName!)&username=\(givenName!)&email=\(email!)&user_image_name=&google_id=\(profileUserId!)"
        }

Это мой метод делегата Google. Что-то не так с моим кодом?

1 Ответ

0 голосов
/ 28 июня 2018

Выйти из системы ранее пользователя

в кнопку входа в систему вы должны позвонить, как это

let sighIn:GIDSignIn = GIDSignIn.sharedInstance()
    sighIn.delegate = self;
    sighIn.uiDelegate = self;
    sighIn.shouldFetchBasicProfile = true
    sighIn.scopes = ["https://www.googleapis.com/auth/plus.login","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/plus.me"];
    sighIn.clientID = "your client id"
    sighIn.signIn()
    GIDSignIn.sharedInstance().signOut()

Тогда остальные методы должны быть такими:

   func sign(_ signIn: GIDSignIn!, present viewController: UIViewController!) {
    self.present(viewController, animated: true, completion: nil)
}

func sign(_ signIn: GIDSignIn!, dismiss viewController: UIViewController!) {
    self.dismiss(animated: true, completion: nil)
}

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
    if (error != nil) {
        return
    }
    reportAuthStatus()
    if GIDSignIn.sharedInstance().currentUser.profile.hasImage {
        imageURL = user.profile.imageURL(withDimension: UInt(120)) as NSURL
        print("Image Url : \(imageURL)")
    }
    userdata = user
    googleID = user.userID
    let login_with = "google"
    DeviceType = "ios"
    self.TokenStr = user.authentication.idToken
    let fullName = user.profile.name
    let GivenName = user.profile.givenName
    let FamilyName = user.profile.familyName
    let email = user.profile.email
    print("user details : \(GivenName,fullName,FamilyName,email,googleID)")

 }
 func sign(_ signIn: GIDSignIn!, didDisconnectWith user: GIDGoogleUser!, withError error: Error!) {
    if (error != nil) {

    } else {
      }
}
func reportAuthStatus() -> Void {
    let googleUser:GIDGoogleUser = GIDSignIn.sharedInstance().currentUser
    if (googleUser.authentication != nil) {
        print("Status: Authenticated")
    } else {
        print("Status: Not authenticated")
    }
 }
func refreshUserInfo() -> Void {
    if GIDSignIn.sharedInstance().currentUser.authentication == nil {
        return
    }
    if !GIDSignIn.sharedInstance().currentUser.profile.hasImage {
        return
    }
}

Попробуйте, надеюсь, вы получите вывод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...