googleSignIn

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->ClientServer驗證->驗證成功通知Client

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章