0

Facebook docsによると、使用App_access_tokenは次のように簡単です。

$appid = 'xxx';
$secret = 'yyyyyyyyy';
$facebook = new Facebook(array(
  'appId'  => $appid,
  'secret' => $secret,
  'cookie' => true,
));

$session = $facebook->getUser()>0;
if($session){
  $access_token = 'access_token='.$facebook->getAccessToken();
  $app_access_token = file_get_contents("https://graph.facebook.com/oauth/access_token?client_id=$appid&client_secret=$secret&grant_type=client_credentials");
}

私の問題は、問題はあり$access_tokenませんが、 $app_access_token 常に false を返すことです。何が間違っていますか?

-編集-

ブラウザで URL を開くとapp_access_token、アクセス トークンが表示されます。file_get_contents に失敗しているようです... ?

4

2 に答える 2

1

問題が発生しているfile_get_contents可能性があります。一部の php 構成設定が原因である可能性があります。(ここでの議論: file_get_contents returns empty string )

代わりに cURL を使用することをお勧めします。

function get_content($URL){
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_URL, $URL);
      $data = curl_exec($ch);
      curl_close($ch);
      return $data;
  }


echo get_content('http://example.com');

問題が解決しない場合は、URLのapp_idとの値を再確認してください。secret

于 2013-02-07T11:26:29.410 に答える
1

私は file_get_contents が機能していません これを試してください:

の php ini 設定を有効にしてallow_url_fopenから、サーバーを再起動します。

作業コードは次のとおりです。

<?php

$facebook_appid         = "facebook_appid";                                 // Facebook appplication id
$facebook_secret        = "facebook_secret";                // Facebook secret id
$redirect_uri           = "https://192.168.75.44/facebook_login/fb_login.php";   // return url to our application after facebook login ## should be SAME as in facebook application
//$cancel_url             = "";                                             // redirect url if user denies the facebook login ## should be SAME as in facebook application
$scope                  = "user_photos,email,user_birthday,user_online_presence,offline_access"; // User permission for facebook


$code                   = $_REQUEST["code"]?$_REQUEST["code"]:"";

if(empty($code)) {  
    $_SESSION['state']  = time(); // CSRF protection
    $dialog_url         = "https://www.facebook.com/dialog/oauth?client_id=". $facebook_appid . "&redirect_uri=" . urlencode($redirect_uri) . "&state=". $_SESSION['state'] . "&scope=".$scope;
    header("location:".$dialog_url);
}

if($_SESSION['state'] && ($_SESSION['state'] == $_REQUEST['state'])) {
    $token_url          = "https://graph.facebook.com/oauth/access_token?". "client_id=" . $facebook_appid . "&redirect_uri=" . urlencode($redirect_uri). "&client_secret=" . $facebook_secret . "&code=" . $code;
    $response           = @file_get_contents($token_url);

    $params             = null;
    parse_str($response, $params);

    echo $params['access_token'];
}

?>
于 2013-02-07T10:53:47.050 に答える