web-dev-qa-db-ja.com

Facebook JS SDKのFB.api( '/ me')メソッドは、Graph API v2.4 +で期待するフィールドを返しません

Facebook APIを使用して基本的な情報を取得しようとしていますが、これまでのところ、ユーザーの名前とIDのみを取得しています。 { name: "Juan Fuentes", id: "123456" }

メール、名、姓、誕生日などの情報を取得する必要があります

これは私のjsコードです

function facebookLogin() {
  FB.login(function(response) {
    var token = response.authResponse.accessToken;
    var uid = response.authResponse.userID;
    if (response.authResponse) {
      FB.api('/me', 'get', { access_token: token }, function(response) {
        console.log(response);
      });

      FB.api('/'+uid, 'get', { access_token: token }, function(response) {
        console.log(response);
      });
    }
  },
  { scope: 'public_profile' }
  );
}

そして、これはそれをアクティブにするボタンです

<a id="fb-login" href="#" onclick="facebookLogin()"></a>
32
Juan Fuentes

Graph API v2.4以降、各フィールドを手動で指定する必要があります。

宣言型フィールド
モバイルネットワークのパフォーマンスを向上させるために、v2.4のノードとエッジでは、GET要求に必要なフィールドを明示的に要求する必要があります。たとえば、GET /v2.4/me/feedにはデフォルトでいいね!とコメントは含まれませんが、GET /v2.4/me/feed?fields=comments,likesはデータを返します。詳細については、特定のフィールドをリクエストする方法に関するドキュメントを参照してください。

例えば。

FB.api('/me', 'get', { access_token: token, fields: 'id,name,gender' }, function(response) {
    console.log(response);
});
55
Tobi

public_profileスコープ(Graph API v2.9でテスト済み)からのデータにこの構文を使用することもできます。

FB.api('/me?fields=birthday,link,gender,age_range', function(response) {
   console.log(response);
});

Graph API Explorerで可能な値をオンラインでテストできます。「トークンを取得」ボタンをクリックするだけです:

https://developers.facebook.com/tools/Explorer/?method=GET&path=me%3Ffields%3Dbirthday%2Clink%2Cgender%2Cage_range&version=v2.9

4
NXT