GoogleSignInResult 在使用 Firebase 的 Android 应用程序中返回 DEVELOPER_ERROR
Posted
技术标签:
【中文标题】GoogleSignInResult 在使用 Firebase 的 Android 应用程序中返回 DEVELOPER_ERROR【英文标题】:GoogleSignInResult returns DEVELOPER_ERROR in Android app using Firebase 【发布时间】:2016-10-10 17:42:54 【问题描述】:所以我已经搞砸了几天了,我不知道为什么它不起作用。我真的希望有人能帮助我。
我正在尝试使用 Firebase 通过 Google 登录对用户进行身份验证。因此,按照他们的指南here,我设置了 Google 登录以获取 OAuth 令牌,然后使用它通过 Firebase 进行身份验证。因此,我按照他们在指南here 中的描述设置了 Google,但就我所知。我从 Google 获得的 OAuth 令牌始终为 null,结果代码为 StatusstatusCode=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();
我已经在谷歌上搜索了一段时间,并认为我已经尝试了已经建议的所有内容。当然,我已经完成了指南中的所有内容,添加了依赖项('com.google.android.gms:play-services-auth:8.4.0')并在开发者控制台中创建了必要的客户端。
我还检查了(多次)我使用的服务器客户端 ID 是来自开发者控制台的正确 ID,并且它与我的 gradle 文件和清单文件中的包名称匹配。我已将 google-services.json 文件添加到我的 /app 目录中,甚至重新生成它以确保它匹配。我还检查了 SHA1 密钥是否正确,但仍然出现相同的错误。
如果我从 Google 登录选项中删除 requestIdToken ,它虽然可以工作,但这对我没有帮助,因为我无法使用 Firebase 登录。有人能告诉我我需要做什么才能让它工作吗?
【问题讨论】:
我面临同样的问题。你找到解决办法了吗? 面对同样的问题,我真的没有想法。你找到解决办法了吗? 【参考方案1】:你设置你的R.string.server_client_id
了吗?
在 API 控制台中打开 Credentials page。 Web 应用程序类型客户端 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 之后,这是我看到的下一个绊脚石。
【讨论】:
以上是关于GoogleSignInResult 在使用 Firebase 的 Android 应用程序中返回 DEVELOPER_ERROR的主要内容,如果未能解决你的问题,请参考以下文章
Android Google SignIn 无法在调试模式下工作:GoogleSignInResult 为 false
请求服务器身份验证代码时,GoogleSignInResult 在 Android 应用程序中返回 DEVELOPER_ERROR
iOS 7:通过 wi-fi 或对等 wi-fi 使用 Multipeer Connectivity 连接设备