1

В приложении для Android я выполнил пример Accessing Google APIs sofar, который успешно завершил соединение GoogleApiClient и вызывается обратный вызов onConnected.Получение имени, пол, расположение «меня» от GoogleApiClient

Однако пример в Google останавливается там, и я не знаю, как получить имя, пол и расположение себя (также известный как меня в JavaScript + PHP SDK для Google+, что я имел используется некоторое время назад).

Вот код Java (повторная обработка и обработка вращения, пропущенная для краткости, похоже, работает) Почему me null?

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .addApi(Plus.API) 
      .addScope(Plus.SCOPE_PLUS_PROFILE) 
      .build(); 
} 

@Override 
protected void onStart() { 
    super.onStart(); 
    mGoogleApiClient.connect(); 
} 

@Override 
public void onConnected(Bundle bundle) { // why is me null? 

    Person me = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); 

    Person.Name name = me.getName(); 
    String given = name.getGivenName(); 
    String family = name.getFamilyName(); 

    Log.d(TAG, "Given: " + given + ", Family: " + family); 
} 

Пожалуйста, посоветуйте, как извлечь данные зарегистрированного пользователя из Google+

UPDATE:

То, что я пытался решить мою проблему:

1) У меня есть добавлен .addScope(Plus.SCOPE_PLUS_LOGIN) к вызову строителя.

2) Я добавил еще 2 разрешения на AndroidManifest.xml:

<uses-permission android:name="android.permission.USE_CREDENTIALS" /> 
<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

В Google Developers Console/Credentials я поставил оба ключи от моих реальных и хранилища ключей от .android \ debug.keystore:

console

Я не понимаю, где/если использовать «Идентификаторы клиентов» выше?

И у меня есть только 2 API: Google+ и GCM - возможно, больше необходимы?

api

3) Наконец, я назвал

adb shell setprop log.tag.GooglePlusPlatform VERBOSE 

и увидели следующее сообщение об ошибке:

E/Volley (3890): [594] BasicNetwork.performRequest: Unexpected response code 403 for https://www.googleapis.com/plus/v1/people/me 
D/GooglePlusPlatform(3890): Unexpected response code (403) when requesting: getPerson 
W/GooglePlusPlatform(3890): {"errors":[{"domain":"usageLimits","reason":"accessNotConfigured","message":"Access Not Configured. The API (Google+ API) is not enabled for your project. Please use the Google Developers Console to update your configuration."}],"code":403} 

Я использую реальное устройство (HTC М9) и мой приложение еще не опубликовано.

ответ

0

Я решил мою проблему, глядя на

adb shell setprop log.tag.GooglePlusPlatform VERBOSE 
adb logcat 

выход и включение Android в Google Play Developer API в Google Developers Console/Credentials (АНИ отсутствовал до):

console

И вот что именно:

@Override 
public void onConnected(Bundle bundle) { 
    Person me = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); 
    if (me != null) { 
     Person.Name name = me.getName(); 
     String given = name.getGivenName(); 
     String family = name.getFamilyName(); 
     boolean female = (me.hasGender() && me.getGender() == 1); 

     String photo = null; 
     if (me.hasImage() && me.getImage().hasUrl()) { 
      photo = me.getImage().getUrl(); 
     } 

     String city = "Unknown city"; 
     List<Person.PlacesLived> places = me.getPlacesLived(); 
     if (places != null) { 
      for (Person.PlacesLived place : places) { 
       city = place.getValue(); 
       if (place.isPrimary()) 
        break; 
      } 
     } 

     Log.d(TAG, "Given: " + given + 
       ", Family: " + family + 
       ", Female: " + female + 
       ", City: " + city); 
    } 
} 
0

Не могли бы вы попробуете этот путь?Если это помогает

public void onConnected(Bundle bundle) { 

    Person me = Plus.PeopleApi.getCurrentPerson(mGoogleApiClient); 

    if (me != null) { 

    String personName = me.getDisplayName();   

    try { 
     int genderInt = me.getGender();//0 for male, and 1 for female 
     String gender  = String.valueOf(genderInt); 
     String birthday = me.getBirthday(); 

     System.out.println("gender" + gender + "bod" + birthday); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    }  

    String email = Plus.AccountApi.getAccountName(mGoogleApiClient); 
    } 
} 
+0

Моя проблема заключается в том, что 'Plus.PeopleApi.getCurrentPerson (mGoogleApiClient)' 'возвращает null' –

+1

посмотреть на этот ответ: http://stackoverflow.com/questions/27908362/integrating-googleplus-in-android-fetch -gender-and-birthday –

+0

Я думаю, это решит вашу проблему наверняка. Может быть, пользователь не вошел в систему. Вот почему он возвращает null. Если бы мой ответ помог вам, пожалуйста, примите мой ответ. Спасибо и удачи –

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