2013-12-18 2 views
2

В моем приложении Android я хочу интегрировать службы Google+. Для этого я ссылался на ссылку quick start guide по этой ссылке, я сделал все шаги, но у меня возникла проблема при выполнении 3-го шага (a, b, c points) «Создать идентификатор клиента OAuth 2.0». Поскольку разработчик Google изменил весь дизайн консоли я не получаю от того, где я получу идентификатор OAuth clien? Я сделал другие шаги правильно. Я ссылался на PlusSampleActivity, который снабжен AndroidSDK, и я использую библиотеку google-play-services_lib, но эта демонстрация работает неправильно. Когда я пытаюсь войти в систему, он открывает диалоговое окно для выбора gmailID после выбора, когда я иду дальше, он не выполняет вход в систему и не сообщает сообщение «Внутренняя ошибка». Пожалуйста, помогите решить эту проблему. Я ссылался на многие ссылки, но большинство из них, возможно, использует старую библиотеку play-service, поэтому я не мог получить много информации об этом. Я также рассмотрел множество вопросов о stackoverflow по этой проблеме, но они не соответствуют моим требованиям. Я также пытался отладить мой код, но Error log не показывает никаких сообщений об этом. Если кто-нибудь знает хороший пример учебника или решение для этой проблемы, пожалуйста, помогите мне решить его. Спасибо.Android - проблема интеграции с Google+ «Внутренняя ошибка произошла»

Код:

package com.google.android.gms.samples.plus; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.GooglePlayServicesUtil; 
import com.google.android.gms.common.SignInButton; 
import com.google.android.gms.plus.PlusClient; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.content.Intent; 
import android.content.IntentSender; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.TextView; 

public class SignInActivity extends Activity implements OnClickListener, 
     PlusClient.ConnectionCallbacks, PlusClient.OnConnectionFailedListener, 
     PlusClient.OnAccessRevokedListener { 

    private static final int DIALOG_GET_GOOGLE_PLAY_SERVICES = 1; 

    private static final int REQUEST_CODE_SIGN_IN = 1; 
    private static final int REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES = 2; 

    private TextView mSignInStatus; 
    private PlusClient mPlusClient; 
    private SignInButton mSignInButton; 
    private View mSignOutButton; 
    private View mRevokeAccessButton; 
    private ConnectionResult mConnectionResult; 

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

     mPlusClient = new PlusClient.Builder(this, this, this) 
       .setActions(MomentUtil.ACTIONS) 
       .build(); 

     mSignInStatus = (TextView) findViewById(R.id.sign_in_status); 
     mSignInButton = (SignInButton) findViewById(R.id.sign_in_button); 
     mSignInButton.setOnClickListener(this); 
     mSignOutButton = findViewById(R.id.sign_out_button); 
     mSignOutButton.setOnClickListener(this); 
     mRevokeAccessButton = findViewById(R.id.revoke_access_button); 
     mRevokeAccessButton.setOnClickListener(this); 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     mPlusClient.connect(); 
    } 

    @Override 
    public void onStop() { 
     mPlusClient.disconnect(); 
     super.onStop(); 
    } 

    @Override 
    public void onClick(View view) { 
     switch(view.getId()) { 
      case R.id.sign_in_button: 
       int available = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
       if (available != ConnectionResult.SUCCESS) { 
        showDialog(DIALOG_GET_GOOGLE_PLAY_SERVICES); 
        return; 
       } 

       try { 
        mSignInStatus.setText(getString(R.string.signing_in_status)); 
        mConnectionResult.startResolutionForResult(this, REQUEST_CODE_SIGN_IN); 
       } catch (IntentSender.SendIntentException e) { 
        // Fetch a new result to start. 
        mPlusClient.connect(); 
       } 
       break; 
      case R.id.sign_out_button: 
       if (mPlusClient.isConnected()) { 
        mPlusClient.clearDefaultAccount(); 
        mPlusClient.disconnect(); 
        mPlusClient.connect(); 
       } 
       break; 
      case R.id.revoke_access_button: 
       if (mPlusClient.isConnected()) { 
        mPlusClient.revokeAccessAndDisconnect(this); 
        updateButtons(false /* isSignedIn */); 
       } 
       break; 
     } 
    } 

    @Override 
    protected Dialog onCreateDialog(int id) { 
     if (id != DIALOG_GET_GOOGLE_PLAY_SERVICES) { 
      return super.onCreateDialog(id); 
     } 

     int available = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
     if (available == ConnectionResult.SUCCESS) { 
      return null; 
     } 
     if (GooglePlayServicesUtil.isUserRecoverableError(available)) { 
      return GooglePlayServicesUtil.getErrorDialog(
        available, this, REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES); 
     } 
     return new AlertDialog.Builder(this) 
       .setMessage(R.string.plus_generic_error) 
       .setCancelable(true) 
       .create(); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == REQUEST_CODE_SIGN_IN 
       || requestCode == REQUEST_CODE_GET_GOOGLE_PLAY_SERVICES) { 
      if (resultCode == RESULT_OK && !mPlusClient.isConnected() 
        && !mPlusClient.isConnecting()) { 
       // This time, connect should succeed. 
       mPlusClient.connect(); 
      } 
     } 
    } 

    @Override 
    public void onAccessRevoked(ConnectionResult status) { 
     if (status.isSuccess()) { 
      mSignInStatus.setText(R.string.revoke_access_status); 
     } else { 
      mSignInStatus.setText(R.string.revoke_access_error_status); 
      mPlusClient.disconnect(); 
     } 
     mPlusClient.connect(); 
    } 

    @Override 
    public void onConnected(Bundle connectionHint) { 
     String currentPersonName = mPlusClient.getCurrentPerson() != null 
       ? mPlusClient.getCurrentPerson().getDisplayName() 
       : getString(R.string.unknown_person); 
     mSignInStatus.setText(getString(R.string.signed_in_status, currentPersonName)); 
     updateButtons(true /* isSignedIn */); 
    } 

    @Override 
    public void onDisconnected() { 
     mSignInStatus.setText(R.string.loading_status); 
     mPlusClient.connect(); 
     updateButtons(false /* isSignedIn */); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult result) { 
     mConnectionResult = result; 
     updateButtons(false /* isSignedIn */); 
    } 

    private void updateButtons(boolean isSignedIn) { 
     if (isSignedIn) { 
      mSignInButton.setVisibility(View.INVISIBLE); 
      mSignOutButton.setEnabled(true); 
      mRevokeAccessButton.setEnabled(true); 
     } else { 
      if (mConnectionResult == null) { 
       // Disable the sign-in button until onConnectionFailed is called with result. 
       mSignInButton.setVisibility(View.INVISIBLE); 
       mSignInStatus.setText(getString(R.string.loading_status)); 
      } else { 
       // Enable the sign-in button since a connection result is available. 
       mSignInButton.setVisibility(View.VISIBLE); 
       mSignInStatus.setText(getString(R.string.signed_out_status)); 
      } 

      mSignOutButton.setEnabled(false); 
      mRevokeAccessButton.setEnabled(false); 
     } 
    } 
} 

ответ

0

Я решил эту проблему. Поскольку я не смог создать OAuth Client ID в новой консоли google api, я столкнулся с этой проблемой. Затем я сделал все шаги с нуля в старой api-консоли, и я мог генерировать OAuth ClientID, и теперь я могу интегрировать его в свое приложение.

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