Facebook PHP SDK使用php获取访问令牌

时间:2011-10-02 18:45:46

标签: php facebook facebook-php-sdk

我使用以下代码发布到Facebook:

require('facebook.php');

$fb = new Facebook(array('appId' => 'MY APP ID','secret' => 'MY APP SECRET','cookie' => true));

$result = false;
$feed_dir = '/401868882779/feed/';  //to the UID you want to send to
$acToken = "MY ACCESS TOKEN";
$url = 'URL';
$link = $url . 'event.php?id=' . $id;
if (isset($picture))
{
    $picture = $url . 'uploads/' . $picture;
}
else
{
    $picture = $url . 'images/blank100x70.png';
}
$msg_body = array('access_token' => $acToken,'name' => $noe_unsecured,'message' => $link,'link' => $link,'description' => $description_unsecured,'picture' => $picture);

try
{
    $result = $fb->api($feed_dir, 'post', $msg_body);
} 
catch (Exception $e)
{     
        $err_str = $e->getMessage();
}

但我需要在每次更改时手动更新访问令牌。我确信有解决方案,但我找不到..我尝试了很多脚本,没有任何效果。

4 个答案:

答案 0 :(得分:1)

根据您执行墙贴的时间,您可能需要申请 offline_access 权限。这会将您的access_token转换为未过期的格式,因此无需刷新令牌。

答案 1 :(得分:1)

答案 2 :(得分:0)

一个简单的解决方案...... 删除 access_token
只要获得publish_stream权限,您根本不需要它!

答案 3 :(得分:0)

我相信有多种方法可以做到这一点:

  - 您可以使用PHP SDK getAccessToken中已提供的方法,该方法返回sdk实例使用的当前访问令牌,更多信息位于this url

  - 但是,一旦您要求用户提供 publish_stream 权限,您就不需要使用访问令牌来调用api()方法,如@ifaour已经提到的那样。因此,您可以执行this example之类的操作,滚动到子标题使用图谱API 发布指向用户墙的链接。

  - 然后,你有另外三个选项

i)要么使用方法here获取新的访问令牌,如果您在用户当前正在使用您的应用时发布,否则您可以尝试接下来的2个选项
ii)获得离线访问
iii)我不确定这一点,但您可能想尝试使用可以获得的应用访问令牌this way