web-dev-qa-db-ja.com

Facebookの友達リストのメールアドレスを取得するにはどうすればよいですか?

Facebook PHP SDKを使用してメールアドレスの友達リストを取得する方法を知っている人はいますか?

9
Mang Jose

それをしてはいけない

http://developers.facebook.com/docs/reference/api/permissions/

emailフィールドは、アプリケーションに接続し、email拡張権限を付与したユーザーのみが使用できます

9
zerkms

いいえ、 メールのアクセス許可 ドキュメントに記載されているように、アプリは友達のメールを取得できません。ドキュメントからの引用:

注:アプリがユーザーの友達のメールアドレスを取得する方法はありません。

6
Bao Le

ユーザーのメールは保護されたプロパティであり、その情報へのアクセスはアプリによって明確に要求され、ユーザーによって許可される必要があります。

注:アプリがユーザーの友達のメールアドレスを取得する方法はありません。

3

このリンクから情報を入手してください。

手順

Statckoverflowディスカッション

ユーザー/友達がアプリのメール権限を付与していない場合、メールアドレスを取得できない可能性があります。このようなインスタンスの場合、アプリに権限を付与した友達だけをフィルタリングすることを選択できます。これは、is_app_userフィールドを使用して実行できます。

SELECT uid, first_name, last_name FROM user 
  WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $userId)

更新された回答を取得する:

$appId     = 'YOUR_APP_ID';
$appSecret = 'YOUR_APP_SECRET';

$userId          = 'A_FACEBOOK_USER_ID';
$userAccessToken = 'THE_FACEBOOK_USER_ACCESS_TOKEN';

$client = new Facebook(array('appId' => $appId, 'secret' => $appSecret));

// get all friends who has given our app permissions to access their data
$fql = "SELECT uid, first_name, last_name, email FROM user "
     . "WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $userId)";
$friends = $client->api(array(
  'method'       => 'fql.query',
  'access_token' => $userAccessToken,
  'query'        => $fql,
));

// make an array of all friend ids
$friendIds = array();
foreach ($friends as $friend) {
  $friendIds[] = $friend['uid'];
}

// get info of all the friends without using any access token
$friendIds = implode(',', $friendIds);
$fql = "SELECT uid, first_name, last_name, email FROM user WHERE uid IN ($friendIds)";
$friends = $client->api(array(
  'method' => 'fql.query',
  'query'  => $fql,
  // don't use an access token
));

// we should now have a list of friend infos with their email addresses
print_r($friends);
1
Somnath Muluk

ユーザーの友達リストにアクセスできます。これらの友達はあなたのアプリケーションを承認していない可能性があるため、デフォルトでは、名前、プロフィール写真、性別、ネットワークのみという、より限定されたデータセットにしかアクセスできません。ユーザーが特定の権限を付与している場合、Facebookプロファイルの他のほとんどの部分(インタレスト、チェックイン、グループなど)はGraphAPIを介して利用できます。これは、ユーザーの情報と友人の情報の両方に適用されます。情報は、ユーザーのプライバシー設定に従って利用できます。

アプリがユーザーの友達のメールアドレスを取得する方法はありません。ドキュメントを参照してください https://developers.facebook.com/docs/reference/login/email-permissions/

1
Narek Safaryan