2016-10-31 5 views
0
私は私のアプリではGmailのログインを統合した

、私はあまりにもユーザーの電子メールと名前をフェッチが、ボタンの状態が表示されないが、ログインすることができていますログのステータスは、AndroidのGmailでログインして表示されない

XML:

<com.google.android.gms.common.SignInButton 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/sign_up_buttonId_withGooglePlus" 
      android:layout_marginLeft="30dp" 
      android:layout_marginRight="20dp" 
      /> 

コード:

onCreate(){ 

    signUpButton_withGooglePlus.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        signUpWithGooglePlus(); 

       } 
      }); 
    } 

public void signUpWithGooglePlus(){ 

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

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

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

    } 

@Override 
    protected 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); 
      Log.v("ResDGooglePlus", result.toString()); 
      if(result.getSignInAccount().getEmail()!=null) 
      firstNameEt.setText(result.getSignInAccount().getEmail()); 

     } 

    } 

private void handleSignInResult(GoogleSignInResult result) { 

     if (result.isSuccess()) { 
      // Signed in successfully, show authenticated UI. 
      GoogleSignInAccount acct = result.getSignInAccount(); 
      Log.v("HandleSignInResultS:", acct.toString()); 
//   mStatusTextView.setText(getString(R.string.signed_in_fmt, acct.getDisplayName())); 

      Toast.makeText(context_SignUpActivity,"Logged in as "+acct.getEmail(),Toast.LENGTH_LONG).show(); 
//   Toast.makeText(context_SignUpActivity,acct.getEmail(),Toast.LENGTH_LONG).show(); 



     } else { 

      // Signed out, show unauthenticated UI. 

     } 
    } 

私は私のコードでは、いくつかの愚かな事をしないのですね。これを解決するには?助けてください。

答えて

2

まず、ボタンの幅と高さはどちらもwrap_contentである必要があります。

<com.google.android.gms.common.SignInButton 
android:id="@+id/sign_in_button" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

第二に、ビルダーの方法では、Googleの記号はのonCreate()関数ではなく、ボタンのonClickイベントで記述する必要があります。

void onCreate() { //function of your activity/fragment 

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

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

signUpButton_withGooglePlus.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

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

       } 
      }); 

} 

これは動作するはずです。 official docの手順を参照してください。

関連する問題