1

Android アプリでは、接続が成功し、コールバックが呼び出されるまで、 Google API へのアクセスの例に従いました。GoogleApiClientonConnected

ただし、Google の例はそこで止まり、自分の名前性別、および場所を取得する方法がわかりません(以前に使用した JavaScript+PHP SDK for Google+ ではmeとしても知られています)。

Javaコードは次のとおりです(簡潔にするために再試行とローテーション処理は省略されていますが、うまくいくようです)なぜmenullなのですか?

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+ から取得する方法を教えてください

アップデート:

問題を解決するために私が試みたこと:

1).addScope(Plus.SCOPE_PLUS_LOGIN)ビルダー呼び出しに追加しました。

2) AndroidManifest.xml にさらに 2 つのアクセス許可を追加しました。

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

Google Developers Console / Credentialsに、実際のキーストアと .android\debug.keystore の両方のキーを配置しました。

コンソール

上記の「クライアント ID」をどこで使用すればよいかわかりません。

Google+ と GCM の 2 つの API しか有効になっていません。

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 M9) を使用していますが、アプリはまだ公開されていません。

4

2 に答える 2

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);
  }
}
于 2015-08-20T14:48:40.647 に答える
0

私は見て、私の問題を解決しました

adb shell setprop log.tag.GooglePlusPlatform VERBOSE
adb logcat

出力し、 Google Developers Console / CredentialsGoogle Play Android Developer APIを有効にします(API は以前はありませんでした):

コンソール

コードは次のとおりです。

@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);
    }
}
于 2015-08-20T18:14:36.640 に答える