Cloud endpoints authentication failure in android app

后端 未结 3 692
渐次进展
渐次进展 2021-01-19 13:19

I\'m having trouble with my first attempt to use authentication in debug mode in a Google Cloud Endpoints android app. I set up credentials like this:

creden         


        
3条回答
  •  礼貌的吻别
    2021-01-19 13:58

    I wish this might help you.

    import android.accounts.Account;
    import android.app.Activity;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.annotation.Nullable;
    import android.support.v4.app.FragmentActivity;
    
    import com.google.android.gms.auth.GoogleAuthException;
    import com.google.android.gms.auth.GoogleAuthUtil;
    import com.google.android.gms.auth.api.Auth;
    import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
    import com.google.android.gms.auth.api.signin.GoogleSignInResult;
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.urbanft.utils.AppToast;
    
    import java.io.IOException;
    
    /**
     * Created by kiwitech on 13/10/16.
     */
    
    public class GoogleLogin extends FragmentActivity implements GoogleApiClient.OnConnectionFailedListener {
    
        private GoogleSignInOptions gso;
        protected GoogleApiClient mGoogleApiClient;
        private int RC_SIGN_IN = 100;
        public static String GOOGLE_ACCESS_TOKEN = "google_access_token";
        public static String GOOGLE_USER_ID = "google_user_id";
        private String mGooglesUserId;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            initialize();
        }
    
        private void initialize(){
            gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestEmail()
                    .build();
    
            mGoogleApiClient = new GoogleApiClient.Builder(this)
                    .enableAutoManage(this , this)
                    .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                    .build();
        }
    
        protected void goForGoogleSignIn(){
            Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
            startActivityForResult(signInIntent, RC_SIGN_IN);
        }
    
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == RC_SIGN_IN) {
                GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
                if(result.isSuccess()){
                    AppToast.showToast(this,"Google sign-in success");
                    mGooglesUserId = result.getSignInAccount().getId();
                    new LocalAsyncTask(result.getSignInAccount().getEmail()).execute();
                }else{
                    AppToast.showToast(this,"Google sign-in failure");
                    onBackPressed();
                    finish();
                }
            }
        }
    
        class LocalAsyncTask extends AsyncTask {
    
            private String email;
    
            LocalAsyncTask(String email) {
                this.email = email;
            }
    
            @Override
            protected String doInBackground(String... params) {
                String token = null;
                try {
                    String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";
                    Account account = new Account(email, "com.google");
                    token = GoogleAuthUtil.getToken(GoogleLogin.this, account, SCOPE);
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (GoogleAuthException e) {
                    e.printStackTrace();
                }
                return token;
            }
    
            @Override
            protected void onPostExecute(String s){
                Intent intent =new Intent();
                intent.putExtra(GOOGLE_ACCESS_TOKEN,s);
                intent.putExtra(GOOGLE_USER_ID,mGooglesUserId);
                setResult(Activity.RESULT_OK, intent);
                onBackPressed();
                finish();
            }
        }
    
        @Override
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
        }
    }
    

提交回复
热议问题