Ios 如何在Realm移动平台上使用Google登录

Ios 如何在Realm移动平台上使用Google登录,ios,swift,realm,google-signin,realm-mobile-platform,Ios,Swift,Realm,Google Signin,Realm Mobile Platform,我正在构建一个基于Realm和Realm移动平台的产品。我已使用验证用户身份,我使用以下命令登录我的用户到Realm移动平台 extension ApplicationDelegate:GIDSignInDelegate{ public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) { let credential = SyncCredenti

我正在构建一个基于Realm和Realm移动平台的产品。我已使用验证用户身份,我使用以下命令登录我的用户到Realm移动平台

extension ApplicationDelegate:GIDSignInDelegate{
    public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
    let credential = SyncCredentials.google(token: signIn.currentUser.authentication.accessToken)
    SyncUser.logIn(with: credential, server: authUrl()) { [weak self](user, error) in

        if let user = user {
            debugPrint("Signed in!")
        } else if let error = error as? NSError {
            debugPrint(error.localizedDescription)
            //Prints "The provided credentials are invalid"
        }
    }
}

有一个已登录的Google用户,但响应总是“提供的凭据无效”,这不是很有帮助。有什么想法吗?有人让Google登录到Realm Mobile Platform上工作了吗?

请确保您使用的是来自Google的正确令牌属性

您需要用来进行身份验证的令牌是

user.authentication.idToken
而不是

signIn.currentUser.authentication.accessToken
正确的扩展是:

extension ApplicationDelegate:GIDSignInDelegate{
    public func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error?) {
    let credential = SyncCredentials.google(token: user.authentication.idToken)
    SyncUser.logIn(with: credential, server: authUrl()) { [weak self](user, error) in

        if let user = user {
            debugPrint("Signed in!")
        } else if let error = error as? NSError {
            debugPrint(error.localizedDescription)
            //Prints "The provided credentials are invalid"
         }
     }
 }

您是否为Google身份验证设置了ObjectServer?请在此了解更多:是的,我已经为我的应用程序添加了谷歌客户端Id。不过,关于realm需要什么类型的凭证的信息并不多。Web应用程序、服务帐户。。有很多方法可以创建凭证,领域文档没有提供您应该使用的指导。对于服务帐户(服务器到服务器),需要客户端密码,但在领域示例中没有提到这一点。我使用了Web应用程序Oauth客户端凭据,但它似乎不起作用。很抱歉延迟回复,但我刚刚注意到您使用了
signIn.currentUser.authentication.accessToken
,而不是Google文档中建议的
user.authentication.idToken
。另外,如果你发现了一个问题,请你分享它与什么有关,谢谢!我也面临同样的问题。我尝试了idToken和accessToken,但都不起作用。我也在服务器中设置了身份验证提供程序,但它仍然不起作用。嘿,伙计们,你们找到解了吗?