我想做的事:
每次向网站添加新内容时,在 Facebook 页面上发布帖子,无论我是否登录 Facebook。
现在有效:
在我自己的墙上发布帖子。
我为实现这一目标所做的工作:
- 我创建了一个应用程序
- 我已经
按照 http://www.facebook.com/login.php?api_key=[my appId] &next=http://www.facebook.com/connect/login_success.html&req_perms=read_stream 为应用授予了所需的权限,发布流、管理页面、发布操作 接下来,我创建了一个脚本来发布内容,基本上就是这样:
$appId='12822*****98'); $secret='17c*****************320f'); // on récupére l'instance de classe Facebook $facebook=new Facebook(array( 'appId' => $appId, 'secret' => $secret )); // acquisition du token $url='https://graph.facebook.com/oauth/access_token?'. 'client_id='.$appId. '&client_secret='.$secret. '&grant_type=client_credentials'. '&scope=read_stream,publish_stream,publish_actions,manage_pages,offline_access'. '&state=dfgdfgdtgdgfdfg'; $reponse = file_get_contents($url); $tabReponse=explode('=',$reponse); $accessToken=$tabReponse[1]; $facebook->setAccessToken($accessToken); $params = array( 'message' => 'the message', 'link' => 'http://www.myAppUrl.com'), 'name' => 'the name', 'description' => 'some description', ); try { // la cible $targetID='1471*********81'; // publication $publishStream = $facebook->api("/$targetID/feed/", 'POST', $params); } catch (FacebookApiException $e) { $result = $e->getResult(); print("Attention, la publication FB a échoué, veuillez vérifier les paramètres!"); }
如果我打印在第一步传递的访问令牌,我会得到类似{appId}|***************************
(27 个字符)的东西,我在这篇旧文章中读到的内容是某些操作的有效令牌,但不是全部。
有了这个,我可以在我的个人墙上发布,但不能在我管理的页面上发布,在最后一种情况下,我得到一个#200 error
(关于尚未授权应用程序执行此操作的用户)。
如果我使用 Graph API Explorer 为我的应用程序生成访问令牌,我会得到一个表示访问令牌的长字符串,如果我在setAccessToken
调用中使用它,我可以完全在页面上发布。因为我得到了一个#100 error
(关于必须引用 Canvas URL 的链接,即使在应用程序设置中将“Stream post URL security:”设置为关闭)
有人知道如何实现我想要的吗?
我不想要任何 USER 连接,服务器必须请求凭据才能通过应用程序发布,而不是用户。