- 登录谷歌云后台:谷歌后台地址
- 配置OAuth 2.0 客户端 ID,初始化谷歌登录客户端ID用这里的web客户端ID,同时需要配置Android的客户端ID(对应包名与SHA-1证书)

- 在build.gradle中添加 google(),同时在dependencies依赖添加
implementation 'com.google.android.gms:play-services-auth:20.2.0'


- 初始化谷歌登录,把第二步拷贝的客户端ID配置
// 初始化谷歌登录
private void initGoogleSignInClient() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("你的客户端ID")
.requestEmail()
.build();
// Build a GoogleSignInClient with the options specified by gso.
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
}
- cocos调用谷歌登录
/**
* google登录
*/
public static void login() {
Log.d(TAG, "==>login");
// 使用GoogleSignIn.getLastSignedInAccount方法为当前登录的用户请求个人资料信息。
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(getActivity().getApplicationContext());
// 不存在则请求登录
if (account == null) {
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
getActivity().startActivityForResult(signInIntent, RC_SIGN_IN);
} else {
Log.d(TAG, "account != null " + account.toString());
onLoginResp(account);
}
}
- 处理登录数据返回
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if( resultCode != RESULT_OK){
return;
}
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
GoogleSignInAccount account = task.getResult(ApiException.class);
if (account != null && !account.isExpired()) {
Log.d(TAG, "onActivityResult != null" + account.toString());
onLoginResp(account);
} else {
Log.w(TAG, "signInResult: null account or expired");
}
} catch (ApiException e) {
Log.w(TAG, "signInResult:failed code=" + e);
e.printStackTrace();
}
}
}
// 获取谷歌登录回调
private static void onLoginResp(GoogleSignInAccount account) {
// Log.d(TAG, account.toString());
String token = account.getIdToken();
String userid = account.getId();
String nickname = account.getDisplayName();
String photo = account.getPhotoUrl().toString();
}
- cocos调用谷歌登出
// 谷歌登出
public static void singOut(){
mGoogleSignInClient.signOut().addOnCompleteListener(getActivity(), new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "==>singOut");
}
});
}