Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 自动注释Cron作业不再工作:致命错误:未捕获OAutheException:错误签名_Php_Facebook Access Token - Fatal编程技术网

Php 自动注释Cron作业不再工作:致命错误:未捕获OAutheException:错误签名

Php 自动注释Cron作业不再工作:致命错误:未捕获OAutheException:错误签名,php,facebook-access-token,Php,Facebook Access Token,几个月前,我编写了一个小应用程序,可以解析我客户博客页面上的一个字符串,并将其作为评论发布到他们的Facebook墙上,我有资格管理这个页面 客户只需验证我的应用程序一次,然后,通过现在已被取消的“离线访问”权限,我就可以代表他们发布到他们的墙上 无论我使用的是旧的SDK还是最新的SDK,代码都不再有效。我尝试将我的代码(以下)迁移到SDK的最新版本和最新协议,以处理身份验证,但没有成功。我还让客户端使用“manage_pages”(管理页面)范围(我从第一天起就有了)重新验证我的应用程序,没有

几个月前,我编写了一个小应用程序,可以解析我客户博客页面上的一个字符串,并将其作为评论发布到他们的Facebook墙上,我有资格管理这个页面

客户只需验证我的应用程序一次,然后,通过现在已被取消的“离线访问”权限,我就可以代表他们发布到他们的墙上

无论我使用的是旧的SDK还是最新的SDK,代码都不再有效。我尝试将我的代码(以下)迁移到SDK的最新版本和最新协议,以处理身份验证,但没有成功。我还让客户端使用“manage_pages”(管理页面)范围(我从第一天起就有了)重新验证我的应用程序,没有任何区别

我得到的错误是
致命错误:未捕获OAuthException:错误签名

我一直在Facebook的文档和明智的堆栈溢出圣人之间徘徊,我已经智穷到极点了。我认为我的问题在于无法生成“长期”访问令牌,但我必须能够做到这一点,而不必让客户每次都登录Facebook(或者根本不登录Facebook)。那么,像那些将用户的Twitter状态镜像到Facebook的其他应用程序,如何在没有后续用户登录/验证的情况下处理离线发布

我注意到,如果我使用Facebook的GraphAPI浏览器,我的代码就可以工作。但这需要我看到一个对话,这在我的客户的情况下是行不通的。(几个月前不需要登录/重新身份验证。)

在过去的一周里,我一直在努力寻找答案,我一直在兜圈子:

…举几个例子。我觉得自己像一只困在浴缸里的蜘蛛

如果有人能分享一个适合我的具体情况的实用代码示例,那将非常感谢,谢谢。以下是我尝试适应最新Facebook PHP SDK和协议的代码:

<?php

require_once 'facebook.php';

$facebook_access_token_url = "https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=" . FACEBOOK_APP_ID . "&client_secret=" . FACEBOOK_APP_SECRET;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $facebook_access_token_url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$facebook_access_token = curl_exec($ch); 
curl_close($ch);

$config['appId'] = FACEBOOK_APP_ID;
$config['secret'] = FACEBOOK_APP_SECRET;
$config['fileUpload'] = false; // optional
$facebook = new Facebook($config);

$facebook->setAccessToken($facebook_access_token);

$page_id = FACEBOOK_APP_PAGE_ID;
$facebook_access_token = "";
$result = $facebook->api('/' . FACEBOOK_ACCOUNT_ADMIN_ID . '/accounts');
foreach($result['data'] as $page){
    if($page['id'] == $page_id) {
        $facebook_access_token = $page['access_token'];
        break;
    }
}

$facebook->setAccessToken($facebook_access_token);
$attachment = array(
    'access_token' => $facebook_access_token,
    'message' => 'Test message',
    'scope' => 'manage_pages,publish_stream,publish_actions'
);

$result = $facebook->api('/' . $_GET['post_id'] . '/comments', 'post', $attachment);

?>


如果使用寿命较长的用户访问令牌获取页面访问令牌,默认情况下页面令牌不会过期–因此,在这种情况下,脱机访问不推荐不是实际问题。

在代码中的哪一点会出现错误?