GoogleSignInResult使用Firebase在Android应用中返回DEVELOPER_ERROR

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

我正在尝试使用Firebase对使用Googlelogin的用户进行身份validation。 因此,按照他们的指导,我已经设置Googlelogin以获取OAuth令牌,然后使用该令牌对Firebase进行身份validation。 所以我按照他们在这里指导的方式设置了Google,但是就我所知。 我从Google获得的OAuth令牌始终为空,结果代码为Status {statusCode = DEVELOPER_ERROR,resolution = null}。

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

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(); } } 

我一直在Google上search一下,并认为我已经尝试了一切已经build议。 当然,我已经完成了指南中的所有内容,添加了依赖关系('com.google.android.gms:play-services-auth:8.4.0'),并在开发者控制台中创build了必要的客户端。

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

如果我从Googlelogin选项中删除了requestIdToken,但它不起作用,因为我无法使用Firebaselogin。 有人可以告诉我,我需要做些什么才能使它工作?

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

  1. 在API控制台中打开“ 凭证”页面 。
  2. Web应用程序types的客户端ID是您的后端服务器的OAuth 2.0客户端ID。

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

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