2017-10-18 18 views
0

Androidデバイスの公式ガイドgoogle log-inに従っています。Googleでログインできない

私は正常にAccount pickerを取得しますが、私が結果を処理すると、常に成功しません。

これは私が何をやったかである:

  • 私は私のコンソールにログインし、私は私が私のAPKを作成するために使用されるキーストアのコンソールコマンドを使用して得られ、このプロジェクトのためにSHA-1を設定します。 (新しく作成された)。
  • 次に、google-services.jsonファイルをダウンロードし、アプリ/フォルダに入れました。ガイドに示唆したように最後に、私はボタンでの符号

    public class SigninMenuFragment extends Fragment implements GoogleApiClient.OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks { 
    
        private final static String TAG = "SigninMenuFragment"; 
        private Button btnFacebookLogin, btnSignin, btnSignup; 
        private Button btnGoogleLogin; 
    
        private static final int RC_SIGN_IN = 9001; 
    
        private GoogleApiClient mGoogleApiClient; 
        private ProgressDialog mProgressDialog; 
    
        public SigninMenuFragment() { 
         // Required empty public constructor 
        } 
    
    
        @Override 
        public View onCreateView(LayoutInflater inflater, ViewGroup container, 
              Bundle savedInstanceState) { 
         // Inflate the layout for this fragment 
         View view = inflater.inflate(R.layout.fragment_signin_menu, container, false); 
    
         btnFacebookLogin = (Button) view.findViewById(R.id.btnLoginFacebook); 
         btnGoogleLogin = (Button) view.findViewById(R.id.btnLoginGoogle); 
         btnSignin = (Button) view.findViewById(R.id.btnSignIn); 
         btnSignup = (Button) view.findViewById(R.id.btnSignUp); 
    
         btnGoogleLogin.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           googleLogin(); 
          } 
         }); 
         btnFacebookLogin.setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View v) { 
           facebookLogin(); 
          } 
         }); 
         GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
           .requestEmail() 
           .build(); 
         mGoogleApiClient = new GoogleApiClient.Builder(getContext()) 
           .enableAutoManage(getActivity() /* FragmentActivity */, this /* OnConnectionFailedListener */) 
           .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
           .build(); 
         return view; 
        } 
    
        private void facebookLogin() { 
         //todo 
        } 
    
    
        private void googleLogin() { 
         Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 
         startActivityForResult(signInIntent, RC_SIGN_IN); 
        } 
    
        @Override 
        public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
    
        } 
    
        @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); 
         } 
        } 
    
        private void handleSignInResult(GoogleSignInResult result) { 
         Log.d(TAG, "handleSignInResult:" + result.isSuccess()); 
         GoogleSignInAccount a = result.getSignInAccount(); 
         if(a == null){ 
          Log.d(TAG, "null"); 
         }else{ 
          Log.d(TAG, a.getDisplayName()); 
         } 
         if (result.isSuccess()) { 
          // Signed in successfully, show authenticated UI. 
          GoogleSignInAccount acct = result.getSignInAccount(); 
         } else { 
          // Signed out, show unauthenticated UI. 
         } 
        } 
    
        @Override 
        public void onStart() { 
         super.onStart(); 
        } 
    
        @Override 
        public void onStop() { 
         super.onStop(); 
         if (mProgressDialog != null) { 
          mProgressDialog.dismiss(); 
         } 
        } 
    
        private void showProgressDialog() { 
         if (mProgressDialog == null) { 
          mProgressDialog = new ProgressDialog(getActivity()); 
          mProgressDialog.setMessage("Loading"); 
          mProgressDialog.setIndeterminate(true); 
         } 
    
         mProgressDialog.show(); 
        } 
    
        private void hideProgressDialog() { 
         if (mProgressDialog != null && mProgressDialog.isShowing()) { 
          mProgressDialog.hide(); 
         } 
        } 
    
        @Override 
        public void onConnected(@Nullable Bundle bundle) { 
         Log.d(TAG, "Connected"); 
        } 
    
        @Override 
        public void onConnectionSuspended(int i) { 
         Log.d(TAG, "NOT Connected"); 
    
        } 
    } 
    

    私のマニフェスト

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/> 
    
    <application 
        android:name=".other.MyCustomApplication" 
        android:allowBackup="true" 
        android:icon="@mipmap/ic_launcher" 
        android:label="@string/app_name" 
        android:roundIcon="@mipmap/ic_launcher_round" 
        android:supportsRtl="true" 
        android:theme="@style/AppTheme"> 
        <activity 
         android:name=".activities.SplashScreenActivity" 
         android:theme="@style/AppThemeNoActionBar"> 
         <intent-filter> 
          <action android:name="android.intent.action.MAIN" /> 
    
          <category android:name="android.intent.category.LAUNCHER" /> 
         </intent-filter> 
        </activity> 
    <!-- ... --> 
    </application> 
    

    で断片

(以下のコードを掲示)ログインを実装

  • Gradle

    //... 
    dependencies { 
        compile fileTree(dir: 'libs', include: ['*.jar']) 
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
         exclude group: 'com.android.support', module: 'support-annotations' 
        }) 
        compile 'com.android.support:appcompat-v7:25.3.1' 
        compile 'com.android.support:design:25.3.1' 
        compile 'com.android.support.constraint:constraint-layout:1.0.2' 
        compile 'com.google.code.gson:gson:2.7' 
        compile 'com.android.support:multidex:1.0.1' 
        compile 'com.squareup.okhttp3:okhttp:3.9.0' 
        compile 'com.android.support:cardview-v7:25.3.1' 
        compile 'com.android.support:recyclerview-v7:25.3.1' 
        compile 'com.google.android.gms:play-services-places:11.4.0' 
        compile 'com.google.android.gms:play-services-location:11.4.0' 
        compile 'com.google.android.gms:play-services-maps:11.4.0' 
        compile 'io.realm:android-adapters:2.1.0' 
        compile 'com.android.support:support-v4:25.3.1' 
        compile 'com.google.firebase:firebase-core:11.4.0' 
        compile 'com.google.firebase:firebase-messaging:11.4.0' 
        compile 'com.facebook.android:facebook-login:[4,5)' 
        compile 'com.google.android.gms:play-services-auth:11.4.0' 
    
        testCompile 'junit:junit:4.12' 
    } 
    
    apply plugin: 'com.google.gms.google-services' 
    

    いくつかの注釈:

    • activityは、ログインbuttonが私の最大の疑問は、他のファイルから、SHA-1世代についてカスタム

    ですFragmentActivity

  • を拡張google devのコンソールからコピー貼り付けされています。

    私はアカウント所有者のフルネームとベースのユーザ情報

    私が間違ってやっているの任意のアイデアがありますか? 32:40.974 23319から23319/utilitapps.prodottilastminute I/HwSecImmHelper私はボタン

    10-19 09をクリックし

    おかげで、すべての

    EDIT

    LogCat :mSecurityInputMethodServiceがnullです。10-19 09:32:41.048 23319-23319/utilitapps.prodottilastminute V/AudioManager: playSoundEffect effectType:0 10-19 09:32:41.049 23319から23319/utilitapps.prodottilastminuteのV/AudioManager: querySoundEffectsEnabled ...

                      --------- beginning of system 10-19 09:32:41.068 23319-23483/utilitapps.prodottilastminute V/FA: Recording user 
    

    係合、MS:15514 10-19 09:32:41.069 23319-23483/utilitapps。プロダクトライフタイムV/FA:測定を使用する サービス10-19 09:32:41.070 23319-23483/utilitapps.prodottilastminute V/FA:リモートサービスに接続10-19 09:32:41.082 23319-23483/utilitapps.prodottilastminute V/FA: 144716338 10-19 09:32:41.086 23319から23319/utilitapps.prodottilastminute V/ActivityThread:ActivityThread、callActivityOnCreate 10-19 09:32:41.087 23319から23319/utilitapps.prodottilastminute Vアクティビティは、時間を一時停止しました/ FA:32:10-19 09 onActivityCreated 41.087 23319から23483/utilitapps.prodottilastminuteのD/FA:ログイベント(FE): user_engagement(_E)、バンドル[{firebase_event_origin(_o)=オート、 engagement_time_msec( _et)= 15514、 firebase_screen_clas (_sc)= SplashScreenActivity、 firebase_screen_id(_si)= 2950491777079955672}] 10-19 09:32:41.122 23319-23483/utilitapps.prodottilastminute V/FA:測定値の使用 サービス10-19 09:32:41.122 23319- 23483/utilitapps.prodottilastminute サービス10-19 09:32:41.124 23319-23483 V/FA:接続試行がすでに進行中10-19 09:32:41.124 23319-23483/utilitapps.prodottilastminute V/FA:測定を使用しています。既に進行中の接続試行10-19 09:32:41.124 23319から23483/utilitapps.prodottilastminuteのV/FA:アクティビティが再開、 時間:144716382 10-19 09:32:41.128 V/FAを/utilitapps.prodottilastminute 23319-23483/utilitapps.prodottilastminute D/FA:ロギングイベント(FE): screen_view(_vs)、バンドル[{firebase_event_origin(_o)=オート、 firebase_previous_class(_pc)= SplashScreenActivityを firebase_previous_id(_pi)= 2950491777079955672、 firebase_screen_class(_sc)= SignInHubActivity、 firebase_screen_id(_si)= 2950491777079955674}] 10 -19 09:32:41.163 23319-23483/utilitapps.prodottilastminute V/FA:測定値を使用する サービス10-19 09:32:41.164 23319-23483/utilitapps.prodottilastminute V/FA:接続試行がすでに進行中です。 19 09:32:41.169 23319-23483/utilitapps.prodottilastminute V/FA: 1000ミリ秒未満の画面が表示されます。イベントは送信されませんでした。時間:57 10-19 09:32:41.169 23319-23483/utilitapps.prodottilastminute V/FA:測定値の使用 サービス10-19 09:32:41.169 23319-23483/utilitapps.prodottilastminute V/FA:接続試行済み進行中の10-19 09:32:41.169 23319から23483/utilitapps.prodottilastminuteのV/FA:144716439 10-19 09:32:活動は、時間を一時停止41.196 23319から23483/utilitapps.prodottilastminuteのD/FA: リモートサービスに接続10-19 09:32:41.196 23319-23483/utilitapps.prodottilastminute V/FA:処理待ち: サービスタスク:5 10-19 09:32:46.263 23319-23483/utilitapps.prodottilastminute V/FA: FA:非アクティブ、 サービスからの切断

    LogCat私はアカウントを選択:34:

    10-19 09 49.570 23319から23319/I/HwSecImmHelper utilitapps.prodottilastminuteを:mSecurityInputMethodServiceは10-19 09 nullです。 34:49.583 23319から23319/utilitapps.prodottilastminute D/SigninMenuFragment:handleSignInResult:偽10-19 09:34:49.583 23319から23319/utilitapps.prodottilastminuteのD/SigninMenuFragment:ヌル 10-19 09:34:49.585 23319- 25806/utilitapps.prodottilastminute V/FA: Activ時間再開、時間:144844854 10-19 09:34:49.592 23319-25806/utilitapps。prodottilastminute D/FA:ログイベント(FE): screen_view(_vs)、バンドル[{firebase_event_origin(_o)=オート、 firebase_previous_class(_pc)= SignInHubActivity、 firebase_previous_id(_pi)= 2950491777079955675、 firebase_screen_class(_sc)= SplashScreenActivity 、 firebase_screen_id(_si)= 2950491777079955672}] 10-19 09:34:49.598 23319から23319/utilitapps.prodottilastminute私は/ HwSecImmHelper: mSecurityInputMethodServiceがnull

  • +0

    https://developers.google.com/mobile/add?platform=android&cntapi=signin&cnturl=https:%2F%2Fdevelopers.google.com%2Fidentity%2Fsign-in%2Fandroid %2Fsign-in%3Fconfigured%3Dtrue&cntlbl =%20Adding%20Sign-Inを続行します。パッケージ名を確認し、SHA-1コード –

    +0

    をデバッグしてください。任意のlogcat? –

    +0

    @IntelliJAmiya "mykeystone.jks"のパスでsha-1コードを再生成しようとしましたが、成功していないので、何も役に立たなくてもlogcatを追加しました。あなたのヒントをありがとう –

    答えて

    0

    あなたGoogleSignInOptionsにあなたはrequestIdTokenを指定する必要があります。

    GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
           .requestIdToken(getString(R.string.default_web_client_id)) 
           .requestEmail() 
           .build(); 
    
    +0

    あなたの答えをありがとう!私は試みたが、不幸にも何も変わらなかった –

    0

    私がSHA-1をどのように作成したかに問題があることがわかりました。

    This answer私は最初に作成したものとは異なるSHA-1ファイルを生成させました。コードをこれに置き換えて私の問題を解決しました。そして今、私は成功裏にログインすることができます。

    私が間違っていることを正確には分かっていない、おそらく間違ったキーストアをターゲットにしていたかもしれませんが、その方法は本当に簡単です。

    すべての助けをありがとう

    関連する問題