2016-07-16 60 views
2

谷歌登錄失敗在android或以上Marshmallowno on kitkat,在kitkat正常工作..我嘗試了一些設備和模擬器但始終無法登錄谷歌登錄失敗在Android 5.0(棒棒糖)或以上棉花糖,但在kitkat沒有handleSignInResult:假

應用程序只顯示從snackbar因爲handleSignInResult:false

我怎麼能解決這個消息?

這是我的代碼

package com.emergency.e_place; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

import com.emergency.e_place.Util.SessionManager; 
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; 

public class LoginActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener { 

    SignInButton signInButton; 
    GoogleApiClient mGoogleApiClient; 
    private final int RC_SIGN_IN = 100; 
    SessionManager session; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_login); 
     setSession(); 
     setGoogleSignInAccount(); 
     declareWidget(); 
     setClickWidget(); 
    } 

    private void setSession() { 
     session = new SessionManager(LoginActivity.this); 
    } 


    private void setButtonGooglesignIn() { 
     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); 
     // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); 
     if (requestCode == RC_SIGN_IN) { 
      GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      handleSignInResult(result); 
     } 
    } 

    private void handleSignInResult(GoogleSignInResult result) { 
     Log.d("Hasil", "handleSignInResult:" + result.isSuccess()); 
     Log.d("Hasil", "handleSignInResult:" + result.toString()); 
     if (result.isSuccess()) { 
      // Signed in successfully, show authenticated UI. 
      GoogleSignInAccount acct = result.getSignInAccount(); 
      String nama = acct.getDisplayName(); 
      String email = acct.getEmail(); 
      String id = acct.getId(); 
      String foto = String.valueOf(acct.getPhotoUrl()); 

      session.createLoginSession(id,nama,email,foto); 


      Intent i = new Intent(getApplicationContext(),MainActivity.class); 
      startActivity(i); 
      finish(); 
     } else { 
      Snackbar.make(((ViewGroup) findViewById(android.R.id.content)).getChildAt(0), "GAGAL LOGIN", Snackbar.LENGTH_SHORT).show(); 
     } 
    } 

    private void setGoogleSignInAccount() { 
     // Configure sign-in to request the user's ID, email address, and basic profile. ID and basic profile are included in DEFAULT_SIGN_IN. 
     GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .build(); 

     // Build a GoogleApiClient with access to the Google Sign-In API and the options specified by gso. 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 
    } 



    private void setClickWidget() { 
     signInButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       setButtonGooglesignIn(); 
      } 
     }); 
    } 

    private void declareWidget() { 
     signInButton = (SignInButton) findViewById(R.id.signin_login_signin); 
    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
     Toast.makeText(getApplicationContext(),connectionResult.getErrorMessage(),Toast.LENGTH_LONG).show(); 
    } 
} 
+1

代碼,你要求運行許可,棉花糖或設備。 – tk1505

+0

不,只是我不能登錄android棒棒糖或以上 –

+0

在發佈問題之前做一個徹底的搜索.. – tk1505

回答

1

那是因爲我沒有註冊的OAuth 2.0客戶端ID

Developer Console>選擇項目>菜單憑據

然後

  1. 點擊創建憑據
  2. OAuth用戶端ID
  3. 應用型
  4. 選擇的Android
  5. 輸入名稱
  6. 輸入您的SSA-1 USIG keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
  7. 輸入你的包名
  8. 點擊創建
  9. 下載JSON
  10. 拷貝文件您剛剛下載的項目
  11. 到文件夾的應用程序,並確保您setGoogleSignInAccount有這樣
mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
       .build(); 
+0

你請你接受你的答案? –

+0

我不能接受,它明天會說 –

相關問題