我已将Google SignIn SDK(v4.0.1)集成到我的iOS应用中。 正常的身份验证过程通过以下方式正常运行:
GIDSignIn.sharedInstance().signIn()
检索到的idToken有效,包括电子邮件和用户的基本信息:
GIVEN_NAME
FAMILY_NAME
图片
问题是,重新启动应用后,我会在didFinishLaunchingWithOptions
上执行静默登录,如下所示:
if GIDSignIn.sharedInstance().hasAuthInKeychain() {
GIDSignIn.sharedInstance().signInSilently()
}
正在调用委托函数sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!)
。身份验证似乎已成功完成。但是,检索到的idToken(来自user.authentication.idToken)缺少" profile"的信息。范围。仅提供电子邮件字段。
将此idToken发送到我们的后端服务器会导致有效登录,但缺少填充到我们的数据库中的信息。令人沮丧。
即使事先设置为true,感觉GIDSignIn.sharedInstance().signInSilently()
也不尊重GIDSignIn.sharedInstance().shouldFetchBasicProfile
。
通过运行user.authentication.refreshTokens:handler
尝试在此阶段刷新令牌,再次生成新令牌,但缺少配置文件范围。