我已将Google登录功能添加到我的应用程序中,并且该应用程序的签名版本将不会使用户登录。我已将其添加到API控制台。我已将JSON文件添加到项目中,并且将客户端ID作为字符串,并且它不会将用户登录的所有内容。连接期间也不会引发任何错误,因此我没有要发布的日志。这是上课的标志
public class Googlesignin extends AppCompatActivity implements
View.OnClickListener, GoogleApiClient.OnConnectionFailedListener {
private LinearLayout logs;
private Button logout,getStarted;
private SignInButton googlebutton;
private TextView displayname,gmail;
private ImageView profile;
private GoogleApiClient googleApiClient;
private static final int REQ_CODE = 2342;
public static final String PREFS_NAME = "MyPreferencesFile";
SharedPreferences settings;
SharedPreferences.Editor editor;
private static final String TAG = "Google sign in";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_googlesignin);
logs = (LinearLayout)findViewById(R.id.logs);
logout = (Button)findViewById(R.id.logout);
getStarted = (Button)findViewById(R.id.getstarted);
googlebutton = (SignInButton) findViewById(R.id.googlebutton);
displayname = (TextView) findViewById(R.id.displayname);
gmail = (TextView) findViewById(R.id.gmail);
getStarted.setOnClickListener(this);
googlebutton.setOnClickListener(this);
logout.setOnClickListener(this);
logs.setVisibility(View.GONE);
getStarted.setVisibility(View.GONE);
GoogleSignInOptions signInOptions = new
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestEmail()
.build();
googleApiClient = new GoogleApiClient.Builder(this)
.enableAutoManage(this,this)
.addApi(Auth.GOOGLE_SIGN_IN_API,signInOptions)
.build();
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.googlebutton:
signIn();
break;
case R.id.logout:
signout();
break;
case R.id.getstarted:
Intent q = new Intent(Googlesignin.this,MainActivity.class);
startActivity(q);
break;
}
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.d(TAG, "onConnectionFailed: "+ connectionResult);
}
private void signIn(){
Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);
startActivityForResult(intent,REQ_CODE);
}
private void signout(){
Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(new
ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
Log.d(TAG, "signOut:onResult: " + status);
updateUI(false);
}
});
}
private void revokeAccess(){
Auth.GoogleSignInApi.revokeAccess(googleApiClient).setResultCallback(new
ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
Log.d(TAG, "revokeAccess:onResult: " + status);
updateUI(false);
}
});
}
private void handleresult(GoogleSignInResult result){
if(result.isSuccess()){
GoogleSignInAccount account = result.getSignInAccount();
String displayuser = account.getDisplayName();
String gmails = account.getEmail();
if(account.getDisplayName() != null){
displayname.setText(displayuser);
gmail.setText(gmails);
savelogin(gmails,displayuser);
updateUI(true);
}else{
displayname.setText("empty");
savelogin(gmails,displayuser);
gmail.setText(gmails);
updateUI(true);
}
}else{
updateUI(false);
Toast.makeText(this,"Login failed",Toast.LENGTH_LONG).show();
}
}
private void updateUI(boolean isLogin){
if(isLogin){
logs.setVisibility(View.VISIBLE);
getStarted.setVisibility(View.VISIBLE);
googlebutton.setVisibility(View.GONE);
}else{
logs.setVisibility(View.GONE);
googlebutton.setVisibility(View.VISIBLE);
getStarted.setVisibility(View.GONE);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==REQ_CODE){
GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
Log.d(TAG, "onActivityResult:GET_TOKEN:success: " + result.getStatus().isSuccess());
handleresult(result);
}
}
private void savelogin(String st1, String st2){
settings = getSharedPreferences(PREFS_NAME,0);
editor = settings.edit();
editor.putString("display",st1);
editor.putString("displayuser",st2);
editor.putBoolean("hasGsignedIn",true);
editor.apply();
Toast.makeText(Googlesignin.this,"called",Toast.LENGTH_LONG).show();
}
}