React Native 在AWS Cognito中使用Google登录,无需托管UI

uubf1zoe  于 6个月前  发布在  React
关注(0)|答案(1)|浏览(82)

我目前正在尝试在我的React Native项目中使用@react-native-google-signin库来登录我的应用程序中的用户,然后使用was-amplify在我的cognito用户池中对他进行身份验证。
现在,我在我的app里有这个:

function GoogleSignInButton() {

  const handleGoogleSignIn = async () => {
    const {idToken, user} = await GoogleSignin.signIn();
    const jwtClaims = parseJwt(idToken);
    
    const googleCredentials = await Auth.federatedSignIn('google', { token: idToken, expires_at: jwtClaims.exp }, user);
  };

  render(
    <Button title={'Google Sign In'} onPress={handleGoogleSignIn}/>
  );
}

字符串
GoogleSignIn部分工作正常,并正确返回idToken和user属性。
然而,当我调用Auth.federatedSignIn(...)时,返回了错误:
NotAuthorizedException:令牌不是来自此身份池支持的提供程序。
我非常确定我正确地配置了AWS Cognito用户池,因为如果我访问托管的UI,我就可以成功登录并注册用户
我在我的用户池中将Google配置为联合身份提供者
x1c 0d1x的数据
我还看到了一些令人困惑的文档,这些文档引导我将Google身份提供者添加到链接到我的用户池的身份池中,如下所示:



然而,我收到了这个错误:
InvalidIdentityPoolsessionationException:身份池配置无效。请检查为此池分配的IAM角色。
这让我相信这可能不是正确的方向。
那么回到最初的问题:它怎么可能没有意识到令牌来自谷歌,而谷歌是指定的身份提供商?

nhn9ugyo

nhn9ugyo1#

我也尝试了这个解决方案,并得到了相同的结果,你.我建议观看这个视频Lesson 4.1 OAuth and React Native (Google Login) .从我所理解的,我们需要使用Identity pools从左侧菜单.这可能是有帮助的https://stackoverflow.com/a/75291833/10617148


的数据
另外,我尝试了另一种解决方案React Native App Auth,结果相同。

相关问题