谷歌登录android后出现错误12501
我在一个名为JNI throught networkHandler\u GoogleSignin的库中有一个类,它将启动一个执行google登录的片段活动。帐户选择显示良好,但在选择帐户后,我出现以下错误12501:Status{statusCode=unknown Status code:12501,resolution=null},并且在片段的onActivityResult中有一个resultCode 0。谷歌登录android后出现错误12501,android,google-api,java-native-interface,google-play-services,google-signin,Android,Google Api,Java Native Interface,Google Play Services,Google Signin,我在一个名为JNI throught networkHandler\u GoogleSignin的库中有一个类,它将启动一个执行google登录的片段活动。帐户选择显示良好,但在选择帐户后,我出现以下错误12501:Status{statusCode=unknown Status code:12501,resolution=null},并且在片段的onActivityResult中有一个resultCode 0。我搜索了此错误的原因,只发现此错误与Oauth链接,因此,我尝试使用或不使用.req
我搜索了此错误的原因,只发现此错误与Oauth链接,因此,我尝试使用或不使用.requestIdToken(…),但得到了相同的错误。
我还尝试将google-services.json放在主项目和库项目的根文件夹或应用文件夹中,再次出现相同的错误(无论如何,我的项目在Eclipse上,我知道Eclipse上不需要这个json文件).
那么原因是什么呢?
以下是我的代码:
public class LibNetworkHandler extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
{
static GoogleApiClient mGoogleApiClient;
static final int RC_SIGN_IN = 1;
public static native void requestCompletedCallback(String result);
private static Intent thisActivity;
private static Activity mainActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
//.requestIdToken(web_client_id)
.requestEmail()
.build();
mGoogleApiClient = new GoogleApiClient.Builder(S3DXAndroidTools.getMainActivity().getApplicationContext())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
startActivityForResult(signInIntent, RC_SIGN_IN);
}
@Override
public void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
public void onStop() {
super.onStop();
mGoogleApiClient.disconnect();
}
public static void networkHandler_GoogleSignin (final String parameters)
{
setIncomingParameters(parameters);
mainActivity = S3DXAndroidTools.getMainActivity();
thisActivity = new Intent(S3DXAndroidTools.getMainActivity().getApplicationContext(),LibNetworkHandler.class);
mainActivity.startActivity(thisActivity);
Log.e("test", "test45 : " + thisActivity.toString());
}
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.e("test", "test35 : " + data.toString());
// Result returned from launching the Intent from
// GoogleSignInApi.getSignInIntent(...);
if (requestCode == RC_SIGN_IN) {
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
if (result.isSuccess()) {Log.e("test", "test3");
GoogleSignInAccount acct = result.getSignInAccount();
String output=setOutputParameters(acct.getId());
requestCompletedCallback(output);
}else{
Log.e("test", "test27 : "+result.getStatus().toString());
}
}
}
@Override
public void onConnectionFailed(ConnectionResult arg0) {
Log.e("error", "connexion failed ");
}
@Override
public void onConnected(Bundle arg0) {
if(mGoogleApiClient.isConnected()){
Log.e("test", "Google play connexion ok");
}
}
@Override
public void onConnectionSuspended(int arg0) {
// TODO Auto-generated method stub
}
}
编辑
我发现了问题所在:似乎在将我的项目迁移到firebase并在同一项目下添加库包和主包之后,我需要在我的library build.gradle中导入firebase插件,即使我的代码中没有使用firebase登录。此外,在迁移项目后,有效的web id密钥发生了更改。requestIdToken()方法似乎不适用于firebase。这可能是由于Sha-1和Sha-256版本与调试密钥不匹配 将所有三个(Debug:Sha-1、Release:Sha-1和Sha-256)键添加到firebase控制台中,然后重新下载json并替换
这对我来说很好。这可能是由于Sha-1和Sha-256的发布和调试密钥不匹配造成的 将所有三个(Debug:Sha-1、Release:Sha-1和Sha-256)键添加到firebase控制台中,然后重新下载json并替换
这对我来说很好。请注意。使用Eclipse可能会妨碍您快速创建应用程序并找到构建项目所需的资源。也许这就是你收到这个错误的原因。要从Eclipse迁移到Android Studio,只需遵循Google开发者的说明。有关此错误12501的更多信息,请检查这些相关的SO问题,以及它是否能帮助您。@KENdi我也在Android Studio上尝试过,我有完全相同的错误。此外,我检查了您链接的问题,但问题的原因是使用了.requestIdToken(…),我没有注意到这一点。使用Eclipse可能会妨碍您快速创建应用程序并找到构建项目所需的资源。也许这就是你收到这个错误的原因。要从Eclipse迁移到Android Studio,只需遵循Google开发者的说明。有关此错误12501的更多信息,请检查这些相关的SO问题,以及它是否能帮助您。@KENdi我也在Android Studio上尝试过,我有完全相同的错误。另外,我检查了您链接的问题,但问题的原因是使用了.requestIdToken(…),我没有添加它