Ama*_*lie 8 android oauth google-authentication firebase google-signin
所以我现在已经搞乱这几天了,我无法弄清楚它为什么不起作用.我真的希望有人可以帮助我.
我正在尝试使用Firebase对使用Google登录的用户进行身份验证.因此,按照他们的指南,我已设置Google登录以获取OAuth令牌,然后使用该功能对Firebase进行身份验证.所以我按照他们在这里的指南中所描述的那样设置Google,但就我而言.我从Google获得的OAuth令牌始终为null,结果代码为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();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经谷歌搜索了一段时间,并认为我已经尝试了所有已经提出的建议.当然,我已经完成了指南中的所有内容,添加了依赖项('com.google.android.gms:play-services-auth:8.4.0')并在开发人员控制台中创建了必要的客户端.
我还检查过(多次)我使用的服务器客户端ID是开发人员控制台中的正确的,并且它在我的gradle文件和Manifest文件中都匹配了我的包名.我已将google-services.json文件添加到我的/ app目录中,甚至重新生成它以确保它匹配.我还检查了SHA1键是否正确,它仍然给出了相同的错误.
如果我从Google登录选项中删除了requestIdToken,但它无效,但这对我无法帮助,因为我无法使用Firebase登录.有人可以告诉我我需要做些什么来使它工作吗?
你设置了吗R.string.server_client_id?
- 打开API 控制台中的凭据页面。
- Web 应用程序类型客户端 ID 是后端服务器的 OAuth 2.0 客户端 ID。
继 SHA-1 之后,这是我看到的下一个绊脚石。
| 归档时间: |
|
| 查看次数: |
3130 次 |
| 最近记录: |