我正在使用gplus登录,并且当我在onActivityResult时遇到此错误....
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
client.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {
GoogleSignInAccount acct = result.getSignInAccount();
// Log.d("Result","details"+ acct.getDisplayName() + acct.getEmail());
mEmail = acct.getEmail();
String mFullName = acct.getDisplayName();
String mGoogleplusId = acct.getId();
SocialUser user = new SocialUser();
user.setType("googleplus");
user.setEmail(mEmail);
user.setFullname(mFullName);
user.setId(mGoogleplusId + "");
loginParams.put("email_id", mEmail);
loginParams.put("googlePlusId", mGoogleplusId);
loginParams.put("full_name", mFullName);
loginParams.put("registrationType", "googleplus");
SignUpService(user);
} else {
Toast.makeText(CustomerLogIn.this, "Unable to fetch data, Proceed manually", Toast.LENGTH_SHORT).show();
}
}
}
我要求按钮点击gplus登录。点击按钮后执行代码....
GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(CustomerLogIn.this)
.addApi(Auth.GOOGLE_SIGN_IN_API, googleSignInOptions)
.build();
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, 0);
而且我发现了这个错误......
Status{statusCode=DEVELOPER_ERROR, resolution=null}
在这条线上....
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
请建议解决方案。
您需要将SHA1密钥添加到firebase控制台配置。你可以这样做:
Firebase控制台(https://console.firebase.google.com) - >您的项目 - >配置 - >滚动到
您可以在Android Studio中找到运行“登录报告”的SHA1密钥:
然后,查看“运行选项卡”并单击按钮:
我认为这是更简单的方法。希望这有帮助。
对我来说,它在我第一次实现它时工作,但在开发几天后停止,并提到了错误消息。
我用这些步骤解决了这个问题:
它起作用了
我在我的firebase应用程序中遇到了这个错误。我在下面添加了requestIdToken(activity.getString(R.string.default_web_client_id))
部分时修复了它。
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().requestIdToken(activity.getString(R.string.default_web_client_id))
.build();
apiClient = new GoogleApiClient.Builder(activity)
.addConnectionCallbacks(this)
.enableAutoManage(activity, this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(apiClient);
activity.startActivityForResult(signInIntent, RC_GOOGLE_SIGN_IN);
当我用新的谷歌帐户更新我的json配置文件时,我收到此错误。
手动卸载应用程序并重新安装应用程序对我有用。
导致该错误的原因是firebase / google控制台中未包含调试或释放密钥的SHA-1校验和。
首先使用以下命令生成密钥:
keytool -list -v -keystore KEYSTORE_PATH -alias ALIAS_NAME
然后复制SHA-1校验和并转到:
Firebase控制台>您的项目>应用程序的设置>添加指纹
对于发布应用程序的任何人,您需要来自密钥库文件的特殊指纹。难怪为什么我只是为发布版本收到此错误。 How to obtain Signing certificate fingerprint (SHA1) for OAuth 2.0 on Android?
确保在Firebase控制台中的身份验证下启用Google登录。
您可能使用生产令牌的SHA1创建配置文件,使用androiddebugkey
别名收集与应用程序调试版本对应的SHA1并将配置文件复制到“app”目录,您应该有两个配置文件(一个用于调试目的,另一个用于生产环境)。
基于https://developers.google.com/identity/sign-in/android/start发表的演练
我有同样的问题,我通过这些步骤使它工作:
1.将DEBUG_KEYSTORE SHA1指纹添加到firebase项目。使用以下命令(MAC / LINUX)
keytool -exportcert -list -v \-alias androiddebugkey -keystore ~/.android/debug.keystore
2.Now生成项目的签名apk。该过程包括为应用程序的发布版本生成密钥库。
Copy the path of the newly generated .jks file.
3.现在使用以下命令生成RELEASE_KEYSTORE SHA1指纹
keytool -list -v -keystore FULL_PATH_TOJKS_FILE -alias ALIAS_NAME
4.从输出中复制新的SHA1,并将其作为另一个SHA1指纹添加到firebase应用程序控制台中。
现在你很高兴! ----希望!它有助于。
我遇到了同样的问题,我解决的问题是我的gradle文件中的applicationId与清单文件中的包名不同。我曾经使用applicationId来创建json文件。我不得不将我的包名改为我的applicationId,并为我修复了它。
请将正确的json文件放在android项目的根目录中 有关更多信息,请参阅此处:http://coderzpassion.com/android-working-latest-google-plus-login-api/
作为此处提供的答案的替代方案,您可以使用Android Studio Firebase助手通过单击某些按钮自动将SHA-1添加到项目中。
在Android Studio中,转到Tools > Firebase > Select 'Authentication'
并单击显示'Email and password authentication'
的链接。
这将为您提供有关如何将身份验证集成到项目中的一些教程,但由于您可能已经完成了所有这些,只需单击'Connect to Firebase'
即可完成。
这是一个老问题,但我最近一直遇到错误10(DEVELOPER_ERROR),因为我使用的是Android客户端ID,我是在google开发者控制台中创建的。
对我来说,解决方案是仅使用Google开发者控制台中的Android凭据来指示我的apk的SHA密钥,并在我的cordova应用程序中使用来自google开发人员控制台的Web应用程序(!)凭据的客户端ID。
config.xml文件:
<plugin name="cordova-plugin-googleplus" spec="^5.3.0">
<variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.[web-application-client-id]" />
<variable name="WEB_APPLICATION_CLIENT_ID" value="[web-application-client-id].apps.googleusercontent.com" />
</plugin>
码:
window.plugins.googleplus.login(
{
'webClientId': '[web-application-client-id].apps.googleusercontent.com'
},
...
我不使用firebase。
您可能已生成并添加了错误的SHA1密钥。使用以下步骤在Android studio中生成SHA1密钥:
现在在firebase android项目中添加此SHA1密钥。