7

Googleを使用してログインしようとしているアプリケーションを開発しています。しかし、getExtrasdataは常にnullを返します。ここでAndroid Google認証サインインhandleSignInResult:false

は、私がログから持っているものです。

getSignInIntent = { act=com.google.android.gms.auth.GOOGLE_SIGN_IN cmp=com.rbsoftware.pfm.personalfinancemanager/com.google.android.gms.auth.api.signin.internal.SignInHubActivity (has extras) } 

[email protected] 

handleSignInResult:false 

r[email protected]7d8c188 

data=Intent { (has extras) } 

getExtrasdata=Bundle[{googleSignInStatus=Status{statusCode=INTERNAL_ERROR, resolution=null}}] 

すべてがデベロッパーコンソールで[OK]をする必要があります。

この問題を解決するのに手伝ってください。

package com.rbsoftware.pfm.personalfinancemanager; 


import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.widget.TextView; 

import com.google.android.gms.auth.api.Auth; 
import com.google.android.gms.auth.api.signin.GoogleSignInAccount; 
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.SignInButton; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.OptionalPendingResult; 
import com.google.android.gms.common.api.ResultCallback; 


public class LoginActivity extends AppCompatActivity implements 
     GoogleApiClient.OnConnectionFailedListener, 
     View.OnClickListener { 
    private static final String TAG = "SignInActivity"; 
    private static final int RC_SIGN_IN = 9001; 

    public GoogleApiClient mGoogleApiClient; 

    private ProgressDialog mProgressDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 

     // Button listeners 
     findViewById(R.id.sign_in_button).setOnClickListener(this); 


     // [START configure_signin] 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .build(); 
     // [END configure_signin] 

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

     // [Button] 
     SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button); 
     signInButton.setSize(SignInButton.SIZE_WIDE); 
     signInButton.setScopes(gso.getScopeArray()); 
    } 

    @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); 
       } 
      }); 
     } 
    } 

    // [START onActivityResult] 
    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
     if (requestCode == RC_SIGN_IN) { 
      GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      handleSignInResult(result); 
     } 
    } 
    // [END onActivityResult] 

    // [START handleSignInResult] 
    private void handleSignInResult(GoogleSignInResult result) { 
     Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
     if (result.isSuccess()) { 
      // Signed in successfully, show authenticated UI. 
      GoogleSignInAccount acct = result.getSignInAccount(); 
      Intent intent = new Intent(this, MainActivity.class); 
      intent.putExtra("name", acct.getDisplayName()); 
      intent.putExtra("id", acct.getId()); 
      intent.putExtra("email", acct.getEmail()); 
      intent.putExtra("photoURL", acct.getPhotoUrl()); 
      Log.d("USER Pic", acct.getPhotoUrl()+""); 
      startActivity(intent); 
      finish(); 
        } else { 
     } 
    } 
    // [END handleSignInResult] 

    // [START signIn] 
    private void signIn() { 
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
     startActivityForResult(signInIntent, RC_SIGN_IN); 
    } 
    // [END signIn] 



    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 

     Log.d(TAG, "onConnectionFailed:" + connectionResult); 
    } 
    @Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.sign_in_button: 
       signIn(); 
       break; 

     } 
    } 

} 
+0

どのPlayServicesバージョンを使用していますか?私たちは8.3を使用し、同じ問題があります。 –

+2

8.4で同じ問題...ソリューションを見つけましたか? – Jokus

+0

プロジェクトのOAuthクライアントID設定を確認しますか? http://android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html –

答えて

2

キーストアのSHA1フィンガープリントが破損しています。あなたは〜/ .android /?を変更し、アンドロイドスタジオを元に戻しましたか?SHA1キーを再生成する必要があります。現在のキーapiをhttps://console.developers.google.com/apis/credentialsから削除し、〜/ .android/debug.keystoreに新しいデバッグキーストアのSHA1で新しいキーを作成します(デフォルトのパスワードは空です)。デバッグインスタンスの新しいキーのAPIにhttps://www.numetriclabz.com/android-google-integration-and-login-tutorial/

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v 

貼り付けSHA1:

はこれを見て。

覚えておいてください:生産キーストアの他のフィンガープリントを探してください。

2

あなたのアプリの署名付きバージョンを実行していない可能性があります。
Sudhanshu Gaurがthis postで指摘したように、先にcreate your json configuration fileと同じキーを使って署名付きapkを生成してみてください。次に、デバイスにインストールし、動作するかどうかを確認します。なぜなら、Android Studioはあなたが「実行」をクリックするとあなたのapkに署名しないからです。
私はまったく同じ問題を抱えていましたが、この修正はうまくいきました。

関連する問題