android google plus登录

时间:2016-12-17 09:23:02

标签: android google-login

我可以在用户登录时获取所有数据,但是当用户通过我的应用程序输入他的凭证(如电子邮件ID和密码)时,它会为名称,名字和姓氏提供空值,但我只能得到用户ID和电子邮件标识。

 gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestProfile()
                .requestEmail()
                .build();

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(this, this)
                .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
                .build();

private void signIn() {

        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

    @Override
    public void onConnectionFailed(ConnectionResult connectionResult) {

    }
    @Override
    public void onStart() {
        super.onStart();

        OptionalPendingResult<GoogleSignInResult> opr = Auth.GoogleSignInApi.silentSignIn(mGoogleApiClient);
        if (opr.isDone()) {
            Log.d(TAG, "Got cached sign-in");
            GoogleSignInResult result = opr.get();
            handleSignInResult(result);
        } else {


            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {
                @Override
                public void onResult(GoogleSignInResult googleSignInResult) {
                    handleSignInResult(googleSignInResult);
                }
            });
        }
    }


    @Override
    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);
            handleSignInResult(result);
        }
        if(status==1) {

            callbackManager.onActivityResult(requestCode, resultCode, data);

        }


    }


    void handleSignInResult(GoogleSignInResult result) {

        if (result.isSuccess()) {

            GoogleSignInAccount acct = result.getSignInAccount();

            id=acct.getId();
            googleId=id;
            personPhotoUrl = acct.getPhotoUrl();
            if(acct.getPhotoUrl() != null) {
                imageUrl = acct.getPhotoUrl().toString();
            }

            else {
                imageUrl="https://www.tineye.com/query/2abdd40717c034bf2dbcd6a0253b933d2a655920?size=160";
            }
            email = acct.getEmail();
            name = acct.getDisplayName();
            firstName = acct.getGivenName();
            lastName = acct.getFamilyName();


            details=new Details(name, firstName, lastName,email, birthday,imageUrl);
            new GetDetails().execute();
            if(details==null)
            {
                Intent intent = new Intent(this, LoginActivity.class);
                startActivity(intent);
            }
            else
            {
                Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                intent.putExtra("googleId", googleId);
                startActivity(intent);
                finish();
            }


        } else {


        }
    }

0 个答案:

没有答案
相关问题