使用 Swift 3 和 iOS 在发送到 Parse Server 的 authdata 对象中使用来自 google 登录的哪个 authdata

Posted

技术标签:

【中文标题】使用 Swift 3 和 iOS 在发送到 Parse Server 的 authdata 对象中使用来自 google 登录的哪个 authdata【英文标题】:Which authdata from google signin to use in authdata object sent to Parse Server with Swift 3 and iOS 【发布时间】:2017-03-18 15:42:39 【问题描述】:

我正在使用 Swift 3 来允许用户登录我的应用程序,该应用程序使用 Parse-Server 后端。我可以很好地使用 Google Plus 登录,但是当我将 authData 发送到 Parse Server 以对用户进行令牌验证时出现错误,我收到一般错误“Google auth invalid for this user”。我怀疑我在 loginWithType 方法中发送了错误的“id”。我检查了 Parse-Server 存储库中的代码,它只有“id”和“token”作为其参数。我怀疑我发送了错误的“id”。所以 id 需要正确的信息作为 id 参数发送并仔细检查我的格式。下面是我正在使用的代码。

func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) 
    print("google sign in hit in app delegate")
    if (error == nil) 
        print("error is not nil")
        var curUser = PFUser.current()
        if (curUser != nil)
        
            print("Skip Google Auth - Found cur user");
            return;
         else 
            // Perform any operations on signed in user here.
            let userId = user.userID
            // For client-side use only!
            let idToken = user.authentication.idToken // Safe to send to the server
            let fullName = user.profile.name
            let givenName = user.profile.givenName
            let familyName = user.profile.familyName
            let email = user.profile.email
            let idt = user.serverAuthCode


            PFUser.register(AuthDelegate(), forAuthType: "google")

            PFUser.logInWithAuthType(inBackground: "google", authData: ["id":user.authentication.clientID,"token":idToken!])
            // logging in confirmed on back end
        
    


感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:

尝试改变

authData: ["id":user.authentication.clientID,"token":idToken!]

到:

authData: ["id":userId!,"token":idToken!]

【讨论】:

我仍然遇到同样的错误。如果您确定这是正确的格式,则问题一定出在 parse-server 的实现中。 我不是。可以打印用户 ID 吗?【参考方案2】:

迟到的答案,但如果您没有弄清楚这一点,您需要将您的 authData 键编辑为:

 let authData = ["access_token": access_token,
                        "id":id]

【讨论】:

以上是关于使用 Swift 3 和 iOS 在发送到 Parse Server 的 authdata 对象中使用来自 google 登录的哪个 authdata的主要内容,如果未能解决你的问题,请参考以下文章

将进度从 NSURLSession 发送到 ViewController [swift - iOS]

当 iPhone 不在附近时,使用 Swift 将数据从 Apple Watch 发送到 iPhone

如何在 swift 3 中使用 Alamofire 制作和发送字典数组(JSON 格式)发送到服务器

将图像从 ios swift 3 上传到 jsp Web 服务

如何在 IOS 上使用 Swift 解析 JSON,从 PHP 服务脚本发送?

如何在 quickblox (Swift, iOS, xcode) 中实现发送图片