react-native-google-signin 与 AWS Cognito
Posted
技术标签:
【中文标题】react-native-google-signin 与 AWS Cognito【英文标题】:react-native-google-signin with AWS Cognito 【发布时间】:2018-07-26 21:59:29 【问题描述】:我正在开发一个 react-native 应用程序,我想让我的用户能够使用 google 登录。但是,当我向 google API 发出请求时,它会返回 WRONG SIGNIN Error: DEVELOPER_ERROR
。
我正在使用 AWS Cognito,并希望将 Google 登录与其集成。我看到一些问题说要生成我的“webClientId”的 SHA-1 蓝图,但它们都使用 firebase。在 Cognito 上,没有添加相应 SHA-1 蓝图的字段。
我的代码如下:
componentWillMount()
GoogleSignin.configure(
webClientId: googleConfig.clientId
);
...
googleSignIn()
GoogleSignin.signIn()
.then((user) =>
console.log(user);
this.setState(user: user);
)
.catch((err) =>
console.log('WRONG SIGNIN', err);
)
.done();
...
<GoogleSigninButton
style= height: 48
size=GoogleSigninButton.Size.Standard
color=GoogleSigninButton.Color.Light
onPress=this.googleSignIn.bind(this)/>
提前感谢您的帮助。
【问题讨论】:
你看过这个例子吗(react-native-cognito-login-example),似乎涵盖了所有的基础:github.com/patw0929/react-native-cognito-login-example/blob/… 【参考方案1】:这是配置不匹配。确保您的 android/app/google-services.json 是正确的。
您可能需要将 SHA 证书指纹添加到 Firebase 配置。按照以下说明查找您的 SHA1 指纹 这个帖子: SHA-1 fingerprint of keystore certificate。 然后,转到https://console.firebase.google.com/,选择您的应用,然后 在项目设置下添加 SHA1 值(上方的齿轮图标 left) -> Your Apps -> SHA 证书指纹
如果您将配置对象中的 webClientId 传递给 GoogleSignin.configure() 确保它是正确的。你可以得到你的 来自 Google Developer Console 的 webClientId。它们列在“OAuth 2.0 客户端 ID”。
如果您在调试模式下运行应用程序而不使用 webClientId 或 您确定它是正确的问题可能是签名(SHA-1 或 SHA-256) 不匹配。您需要将以下内容添加到 android/app/build.gradle:
signingConfigs debug if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) storeFile file(MYAPP_RELEASE_STORE_FILE) storePassword MYAPP_RELEASE_STORE_PASSWORD keyAlias MYAPP_RELEASE_KEY_ALIAS keyPassword MYAPP_RELEASE_KEY_PASSWORD release if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) storeFile file(MYAPP_RELEASE_STORE_FILE) storePassword MYAPP_RELEASE_STORE_PASSWORD keyAlias MYAPP_RELEASE_KEY_ALIAS keyPassword MYAPP_RELEASE_KEY_PASSWORD
来自here。
我还在 github 上找到了this working example。
【讨论】:
【参考方案2】:-
转到 AWS 控制台 > IAM > 身份提供商 > 创建提供商 > 提供商类型 = OpenID Connect > 提供商 URL = https://accounts.google.com > 受众 = “您在 Google 开发者控制台中创建的 Google 客户端 ID”
转到 AWS 控制台 > Cognito > 联合身份池。选择您的身份池,转到“编辑身份池”,然后导航到 OpenID 选项卡。您应该会看到一个标题为“accounts.google.com”的复选框,请选中它。
在您的代码中,使用您在构建用于调用
GoogleAuthUtil.GetTokenGoogleAuthUtil.GetToken(this, googleAccount, scopes)
的范围字符串时在 Google Developer Console 中生成的“Google WebApp 客户端 ID”。那是scopes = "audience:server:client_id:" + "webClientId"
【讨论】:
以上是关于react-native-google-signin 与 AWS Cognito的主要内容,如果未能解决你的问题,请参考以下文章