google登录问题无法登录

时间:2018-08-22 17:42:56

标签: android google-signin

我已将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();
    }

}

0 个答案:

没有答案