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<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.w(TAG, "signOut");
}
});
}
private void revokeAccess() {
mGoogleSignInClient.revokeAccess().addOnCompleteListener(mActivity, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.w(TAG, "revokeAccess");
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
handleSignInResult(task);
}
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) {
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