SignInResult:failed code= 7 没有搭梯子
SignInResult:failed code= 10 配置项目出错 检查Web client ID 以及SHA1证书 重新编译
signInResult:failed code= 8
signInResult:failed code=4
IdToken不是AccessToken,如果我们的后端需要token,就传给他AccessToken
https://oauth2.googleapis.com/tokeninfo?id_token=XYZ123
debug signing certificate : 目前贵司在使用的可以任意使用
release signing certificate : alias name :aaaaa / passwd : bbbbbbb
1.配置androidStudio环境,注意版本兼容(否则你就自己偷着乐吧)
1:获取GoogleSignIn Demo,然后用AndroidStudio打开sign项目,然后自己欣赏demo去吧
2:获取SHA-1哈希值并且配置项目(傻瓜式配置即可)
(java -verbose查看java jdk 安装路径)
1:cd C:\Program Files\Java\jdk1.8.0_111\bin
2:keytool -list -v -keystore C:\Users\Administrator\.android\debug.keystore
3:默认口令是android
1:cd C:\Program Files\Java\jdk1.8.0_111\bin
2:keytool -list -v -keystore F:\OneSword.jks
3:默认口令是自己生成.jks时候设置的
signInResult:failed code=10(检查sha1的正确性)
生成apk使用的.jks文件和自带的debug.keystore 的生成sha1是不同的,不管使用哪一个,确定和谷歌项目配置使用的sha1相同(如果不同,点击账户报错signInResult:failed code=10)
3 创建凭据时候 设置API密钥(否则又黄色警告,网上说不能有警告,所以就强迫了自己一下)
最后记录下来 Web client Id
1.sdk初始化
private GoogleSignInClient mGoogleSignInClient;
private Activity mActivity;
@Override
public void onCreate() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.DRIVE_APPFOLDER))
.requestIdToken(mActivity.getString(R.string.server_client_id))
.requestServerAuthCode(mActivity.getString(R.string.server_client_id))
.requestEmail()
.build();
}
2
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(mActivity);
if (account != null) {
//用户已使用Google登录您的应用
//自己去向服务器去验证吧 account.getId()+account.getIdToken()
//Token值是真的长 超过了1024
}else {
signIn();//开始登陆吧,调出来登陆窗口
}
private void signIn() {
Log.w(TAG, "signIn ;");
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
mActivity.startActivityForResult(signInIntent, RC_SIGN_IN);
}
private void signOut() {
mGoogleSignInClient.signOut().addOnCompleteListener(mActivity, new OnCompleteListener
@Override
public void onComplete(@NonNull Task
Log.w(TAG, "signOut");
}
});
}
private void revokeAccess() {
mGoogleSignInClient.revokeAccess().addOnCompleteListener(mActivity, new OnCompleteListener
@Override
public void onComplete(@NonNull Task
Log.w(TAG, "revokeAccess");
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Task
handleSignInResult(task);
}
private void handleSignInResult(Task
try {
GoogleSignInAccount account = completedTask.getResult(ApiException.class);
if(account!=null){
//自己去向服务器去验证吧 account.getId()+account.getIdToken()
//Token值是真的长 超过了1024
} else {
Log.w(TAG, "account.account = null");
}
} catch (ApiException e) {
//反正出来很多配置项目的错
Log.w(TAG, "signInResult:failed code=" + e.getStatusCode());
}
}
大体流程:Client登陆按钮->SDK SignIn->Client向Server验证->验证成功通知Client