0

私はjavascript+PHPを使用しています

            <!DOCTYPE html>
<html xmlns:fb='http://www.facebook.com/2008/fbml'>
  <body>
        <fb:login-button scope='email,user_photos'></fb:login-button>
        <div id='fb-root' ></div>
                <script>
      window.fbAsyncInit = function() {
        FB.init({
          appId: '478449982166112',
          cookie: true,
          xfbml: true,
          oauth: true
        });
        FB.Event.subscribe('auth.login', function(response) {
          window.location.reload();
        });
        FB.Event.subscribe('auth.logout', function(response) {
          window.location.reload();
        });
      };
      (function() {
        var e = document.createElement('script'); e.async = true;
        e.src = document.location.protocol +
          '//connect.facebook.net/en_US/all.js';
        document.getElementById('fb-root').appendChild(e);
      }());
    </script>.
      </body>
</html>

ご覧のとおり、私は電子メールの許可を要求しています。

次に、PHPから/meを呼び出します。

 $user = $facebook->getUser();

 if ($user) {
    try {
        // if user is logged on to facebook, the account details will be saved in $me variable
        $me = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        // if user is not logged on to facebook, set $user to null . 
        $user = null;
    }
 }

ただし、メールフィールドは含まれていません。

4

1 に答える 1

0

emailPHPでは許可を要求しておらず、Javascriptでのみ要求しています。Javascriptはブラウザで実行され、PHPはサーバーで実行されます。

ログインURLを生成し、PHPでリダイレクトするには、次のことを試してください。

$user = $facebook->getUser();

if (!$user) {
    header('Location: ' . $facebook->getLoginUrl(array('scope' => 'email')));
    exit;
} else {
    try {
        // if user is logged on to facebook, the account details will be saved in $me variable
        $me = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        // if user is not logged on to facebook, set $user to null . 
        $user = null;
    }
}
于 2012-08-23T12:17:21.540 に答える