图谱API令牌和file_get_contents

时间:2012-10-27 08:33:46

标签: php facebook-graph-api

我有简单的PHP函数file_get_contents的问题... 它显示NULL,但它在服务器上启用,所以我不知道问题在哪里?

<?php
$url = "http://graph.facebook.com/oauth/access_token?client_id=(ID)&
    client_secret=(PW)&grant_type=client_credentials";
$app_token = file_get_contents($url);
echo $app_token;
?>

(ID)和(PW)是appID和appSecret

提前致谢!

2 个答案:

答案 0 :(得分:0)

就个人而言,我会使用php curl和https(http://developers.facebook.com/docs/reference/api/)

将输出HTTP而不是HTTPS:     {         “错误”:{             “message”:“client_secret必须通过HTTPS传递”,             “type”:“OAuthException”,             “代码”:1         }     }

请在开发期间启用错误报告。你可能会得到: 警告:file_get_contents():无法找到包装器“https” - 您是否忘记在配置PHP时启用它?在第3行的/usr/local/apache2/htdocs/xxxxx/test12345.php

答案 1 :(得分:0)

使用需要使用HTTPS,并检查启用了哪些包装

在Windows上,您应该在php.ini

中看到这一点
extension=php_openssl.dll

检查包装器

<?php
    var_dump(stream_get_wrappers());
?>

哪个应该提供输出,例如

array(12) {
  [0]=>
  string(5) "https"
  [1]=>
  string(4) "ftps"
  [2]=>
  string(13) "compress.zlib"
  [3]=>
  string(14) "compress.bzip2"
  [4]=>
  string(3) "php"
  [5]=>
  string(4) "file"
  [6]=>
  string(4) "glob"
  [7]=>
  string(4) "data"
  [8]=>
  string(4) "http"
  [9]=>
  string(3) "ftp"
  [10]=>
  string(4) "phar"
  [11]=>
  string(3) "zip"

注意HTTPS在数组中。

如何获取令牌的完整示例

<?php 

    $app_id = "YOUR_APP_ID";
    $app_secret = "YOUR_APP_SECRET";
    $app_token_url = "https://graph.facebook.com/oauth/access_token?"
        . "client_id=" . $app_id
        . "&client_secret=" . $app_secret 
        . "&grant_type=client_credentials";

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

    echo("This app's access token is: " . $params['access_token']);

 ?>

http://developers.facebook.com/docs/howtos/login/login-as-app/