gpt4 book ai didi

android - GoogleSignInResult 使用 Firebase 在 Android 应用程序中返回 DEVELOPER_ERROR

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:59:42 24 4
gpt4 key购买 nike

所以我已经搞砸了几天了,我不明白为什么它不起作用。我真的希望有人能帮助我。

我正在尝试使用 Firebase 对使用 Google 登录的用户进行身份验证。所以按照他们的指南here我已设置 Google 登录以获取 OAuth token ,然后使用它通过 Firebase 进行身份验证。所以我按照他们在指南中的描述设置了 Google here但就我所知。我从 Google 获得的 OAuth token 始终为 null,结果代码为 Status{statusCode=DEVELOPER_ERROR, resolution=null}。

到目前为止,我的 Activity 如下所示:

public static final int RC_GOOGLE_LOGIN = 1;
private GoogleApiClient mGoogleApiClient;
final Context context = this;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Firebase.setAndroidContext(this);

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(this.getResources().getString(R.string.server_client_id))
.build();

mGoogleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();

SignInButton signInButton = (SignInButton) findViewById(R.id.googlebtn);
signInButton.setSize(SignInButton.SIZE_WIDE);
signInButton.setScopes(gso.getScopeArray());
signInButton.setOnClickListener(this);

}

@Override
public void onClick (View v) {

switch (v.getId()) {
case R.id.googlebtn:
signIn();
break;
}
}

private void signIn() {
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_GOOGLE_LOGIN);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (requestCode == RC_GOOGLE_LOGIN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
handleSignInResult(result);
}
}

private void handleSignInResult(GoogleSignInResult result) {
if (result.isSuccess()) {
// Signed in successfully, show authenticated UI.
GoogleSignInAccount acct = result.getSignInAccount();

String idToken = acct.getIdToken();
}
}

我已经用谷歌搜索了一段时间,认为我已经尝试了所有建议的方法。当然,我已经完成了指南中的所有操作,添加了依赖项('com.google.android.gms:play-services-auth:8.4.0')并在开发人员控制台中创建了必要的客户端。

我还检查(多次)我使用的服务器客户端 ID 是开发者控制台中的正确客户端 ID,并且它与我的 gradle 文件和 list 文件中的包名称匹配。我已将 google-services.json 文件添加到我的/app 目录,甚至重新生成它以确保它匹配。我还检查了 SHA1 key 是否正确,它仍然给出相同的错误。

如果我从 Google 登录选项中删除 requestIdToken,它虽然可以工作,但这对我没有帮助,因为我无法使用 Firebase 登录。有人可以告诉我我需要做什么才能让它发挥作用吗?

最佳答案

你有没有设置你的R.string.server_client_id

  1. Open the Credentials page in the API Console.
  2. The Web application type client ID is your backend server's OAuth 2.0 client ID.

https://developers.google.com/identity/sign-in/android/start-integrating#get_your_backend_servers_oauth_20_client_id

在 SHA-1 之后,这是我见过的下一个绊脚石。

关于android - GoogleSignInResult 使用 Firebase 在 Android 应用程序中返回 DEVELOPER_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37736660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com