4

現在正常に動作する自分のサイト用の Facebook ログイン スクリプトがあります。現在の基本情報とともに、ユーザーからの電子メールを要求する機能を追加したいと考えています。アクセス トークンを要求する必要があることはわかっていますが、その方法がよくわかりません。これが私の現在のコードです:

$facebook = new Facebook(array(
            'appId' => APP_ID,
            'secret' => APP_SECRET,
            'cookie' => true
        ));
$session = $facebook->getSession();

if (!empty($session)) {
    # Active session, let's try getting the user id (getUser()) and user info (api->('/me'))
    try {
        $uid = $facebook->getUser();


        $user = $facebook->api('/me/');
4

2 に答える 2

3
You have to provide an extended permission for email at the time of login..
 $access_token = $this->facebook->getAccessToken();
        //check permissions list
        $permissions_list = $this->facebook->api('/me/permissions', 'GET', array('access_token' => $access_token));
        $permissions_needed = array('email');
        foreach ($permissions_needed as $perm) {
            if (!isset($permissions_list['data'][0][$perm]) || $permissions_list['data'][0][$perm] != 1) {
                $login = $facebook->getLoginUrl(array('scope' => 'email,user_birthday',
                'redirect_uri' => your site redirectUri,
                'display' => 'popup'
            ));
                header("location:$login");
            }
        }
        $user = $facebook->getUser();
        if ($user) {
            try {
                $userInfo = $facebook->api("/$user");
            } catch (FacebookApiException $e) {
                echo $e->getMessage();
            }
        }
        print_r($userInfo);
于 2012-07-18T08:35:40.003 に答える
1

サーバー側の認証プロセスを見てください。これは、必要なアクセス許可 (「スコープ」と呼ばれます) を通過する場所です。ユーザーがまだログインしていない場合は、ログイン パネルが表示されます。その後、ユーザーが要求し、まだ付与されていない基本的な権限を超えるすべての権限について、別の権限パネルが表示されます。次に、トークンと交換できる認証トークンまたはコードを受け取ります。これを使用して、ユーザーにさらにクエリを実行し、応答で電子メールの詳細を取得します。

幸運を!

于 2012-07-13T15:19:38.440 に答える