2016-05-06 3 views
0

Попробованной реализации Google подписаться на андроид приложение, код, как показано ниже:Невозможно реализовать Google подписаться на андроид

public class MainActivity extends AppCompatActivity implements View.OnClickListener, GoogleApiClient.OnConnectionFailedListener { 

    //Signin button 
    private SignInButton signInButton; 

    //Signing Options 
    private GoogleSignInOptions gso; 

    //google api client 
    private GoogleApiClient mGoogleApiClient; 

    //Signin constant to check the activity result 
    private int RC_SIGN_IN = 100; 

    //TextViews 
    private TextView textViewName; 
    private TextView textViewEmail; 
    private NetworkImageView profilePhoto; 

    //Image Loader 
    private ImageLoader imageLoader; 

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

     //Initializing Views 
     textViewName = (TextView) findViewById(R.id.textViewName); 
     textViewEmail = (TextView) findViewById(R.id.textViewEmail); 
     profilePhoto = (NetworkImageView) findViewById(R.id.profileImage); 

     //Initializing google signin option 
     gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .build(); 

     //Initializing signinbutton 
     signInButton = (SignInButton) findViewById(R.id.sign_in_button); 
     signInButton.setSize(SignInButton.SIZE_WIDE); 
     signInButton.setScopes(gso.getScopeArray()); 

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


     //Setting onclick listener to signing button 
     signInButton.setOnClickListener(this); 
    } 


    //This function will option signing intent 
    private void signIn() { 
     //Creating an intent 
     Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient); 

     //Starting intent for result 
     startActivityForResult(signInIntent, RC_SIGN_IN); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     //If signin 
     if (requestCode == RC_SIGN_IN) { 
      GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
      //Calling a new function to handle signin 
      handleSignInResult(result); 
     } 
    } 


    //After the signing we are calling this function 
    private void handleSignInResult(GoogleSignInResult result) { 
     //If the login succeed 
     if (result.isSuccess()) { 
      //Getting google account 
      GoogleSignInAccount acct = result.getSignInAccount(); 

      //Displaying name and email 
      textViewName.setText(acct.getDisplayName()); 
      textViewEmail.setText(acct.getEmail()); 


     } else { 
      //If login fails 
      Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show(); 
     } 
    } 

    @Override 
    public void onClick(View v) { 
     if (v == signInButton) { 
      //Calling signin 
      signIn(); 
     } 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 

    } 
} 

Я перепроверил все предпосылки как на директивы Google, но я получаю логин неудачный арест, поскольку result.isSuccess() - false снова и снова. Я видел, как многие люди задавались этой ошибкой, но ни одного ясного решения не было. Есть ли что-то очевидное, что мне не хватает?

ответ

1

Вы не подключаете GoogleApiClient. Точность в документации here:

Вы должны создать экземпляр объекта клиента в onCreate(Bundle) метод вашей деятельности и затем вызвать connect() в onStart() и disconnect() в onStop(), независимо от состояния.

Таким образом, вы должны connect() и впоследствии disconnect()GoogleApiClient.

+0

Пробовал реализовать, все еще получая тот же результат. – gunner

+0

Вы пробовали просмотреть журналы, чтобы узнать, почему это не удается? Как правило, есть журналы, которые печатаются при возникновении ошибки. @gunner – Nerd

+0

В журнале нет ошибок 05-06 23: 31: 38.090 29036-29066/app.num.googleintegration I/GMPM: Диспетчер тегов не найден и, следовательно, не будет использоваться 05-06 23: 31: 38.232 29036-29036/app.num.googleintegration D/SignInActivity: handleSignInResult: false 05-06 23: 31: 38.232 29036-29036/app.num.googleintegration D/AppTracker: App Event: start 05- 06 23: 31: 38.279 29036-29036/app.num.googleintegration D/AbstractTracker: успех события 05-06 23: 31: 38.279 29036-29036/app.num.googleintegration I/Timeline: Timeline: Activity_idle id: android. [email protected] время: 29261787 – gunner

0

Для этого вам необходимо создать подписанный APK. Убедитесь, что вы используете другой ключ SHA для выпуска. Затем создайте APK и установите его прямо на свой телефон. Это должно сработать.

+0

да Спасибо или ваш ответ. Что-то подобное было предложено в ссылке, размещенной nerd в комментариях. Однако эта ссылка не говорит о другой SHA. Позвольте мне взглянуть на это. – gunner

Смежные вопросы