0

以下のコードを使用してアクセス トークンにアクセスしようとしました。

$code=$_REQUEST['code'];

if(empty($code)) {
    $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" 
    . $app_id . "&redirect_uri=" . urlencode($my_url) 
    . "&scope=publish_stream,user_photo_video_tags";
    echo("<script>top.location.href='" . $dialog_url . "'</script>");
  }

  $token_url = "https://graph.facebook.com/oauth/access_token?client_id="
    . $app_id . "&redirect_uri=" . urlencode($my_url) 
    . "&client_secret=" . $app_secret 
    . "&code=" . $code;
    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];

正常に動作しますが、ユーザーがアプリケーションを 2 回目に使用しようとすると、ユーザーを承認しようとするときにスムーズな流れがありません。

それで、私の質問は、ユーザーを承認しようとしているときにスムーズな流れがあることを確認するにはどうすればよいですか?

4

1 に答える 1

0

ユーザー認証をスムーズに行うために、最新のFacebook PHP SDKを使用することをお勧めします

ユーザー認証を処理する私のスクリプトの例を次に示します。

// init new facebook class instance with app info
$facebook = new Facebook(array(
'appId' => 'YOUR APP ID',
'secret' => 'YOUR APP SECRET'
));

// get user UID
$fb_user_id = $facebook->getUser();

// get the url where to redirect the user
$location = "". $facebook->getLoginUrl(array('scope' => 'publish_stream'));

// check if we have valid user
if ($fb_user_id) {
try {
    // Proceed knowing you have a logged in user who's authenticated.
    $fb_user_profile = $facebook->api('/me');   

} catch (FacebookApiException $e) {
    $fb_user_id = NULL;
    // seems we don't have enough permissions
    // we use javascript to redirect user instead of header() due to Facebook bug
    print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';

    // kill the code so nothing else will happen before user gives us permissions
    die();
}

} else {
// seems our user hasn't logged in, redirect him to a FB login page

print '<script language="javascript" type="text/javascript"> top.location.href="'. $location .'"; </script>';

// kill the code so nothing else will happen before user gives us permissions
die();
}

// at this point we have an logged in user who has given permissions to our APP
// basic user info can be fetched easily
print "User access token is: ". $facebook->getAccessToken();
于 2011-08-29T13:58:35.727 に答える