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密钥(否则又黄色警告,网上说不能有警告,所以就强迫了自己一下)

googleSignIn_第1张图片

最后记录下来 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 task) {
         Log.w(TAG, "signOut");
               }
   });
}
private void revokeAccess() {
      mGoogleSignInClient.revokeAccess().addOnCompleteListener(mActivity, new OnCompleteListener() {
      @Override
      public void onComplete(@NonNull Task task) {
         Log.w(TAG, "revokeAccess");
         }
   });
}

public void onActivityResult(int requestCode, int resultCode, Intent data) {
           Task task = GoogleSignIn.getSignedInAccountFromIntent(data);
      handleSignInResult(task);
     }
private void handleSignInResult(Task 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

 

你可能感兴趣的:(SDK)