使用AWS Cognito

时间:2018-02-16 02:16:57

标签: amazon-web-services react-native google-signin

我正在开发一个本机应用程序,我想让我的用户能够使用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)}/> 

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  

这是配置不匹配。确保您的   android / app / google-services.json是正确的。

     

您可能需要将SHA证书指纹添加到Firebase   配置。按照以下说明查找SHA1指纹   这个帖子:   SHA-1 fingerprint of keystore certificate。   然后,转到https://console.firebase.google.com/,选择您的应用,然后   在项目设置下添加SHA1值(上方的齿轮图标   左)->您的应用程序-> 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

答案 1 :(得分:0)

  1. 转到AWS控制台> IAM>身份提供程序>创建提供程序>提供程序类型= OpenID Connect>提供程序URL = https://accounts.google.com>听众=“您在Google Developer Console中创建的Google Client ID”
  2. 转到AWS控制台> Cognito>联合身份池。选择您的身份池,转到“编辑身份池”,然后导航到OpenID选项卡。您应该看到一个标题为“ accounts.google.com”的复选框,选中它。
  3. 在您的代码中,使用您在生成用于调用GoogleAuthUtil.GetTokenGoogleAuthUtil.GetToken(this, googleAccount, scopes)的范围字符串时在Google Developer Console中生成的“ Google WebApp客户端ID”。那就是scopes = "audience:server:client_id:" + "webClientId"