【发布时间】:2012-03-08 00:11:11
【问题描述】:
好的,所以我终于成功地将我网站上的动态新闻帖子与我的页面墙作为页面(而不是用户)通过 PHP 链接起来。 我仍然想知道我的解决方案是否正确,或者它是否会长期有效。 话虽如此,这就是我所做的:
- 创建了一个配置文件来管理页面
- 创建了公司页面
- 创建了一个应用,其域指向我的网站域,网站指向我的网站 url
- 禁用offline_access 弃用以便能够颁发offline_access 令牌
- 通过 http://graph.facebook.com/PAGE_NAME 找到了我的 pageID
- 访问 https://developers.facebook.com/tools/explorer/APP_ID
- 粘贴 pageID 而不是 userID 并点击提交
- 然后我点击获取访问令牌并检查了 manage_pages、publish_stream、offline_access
(当仅此一项不起作用时,我访问了https://developers.facebook.com/docs/authentication/,在“页面登录”下我发现页面登录需要不同类型的令牌......)
- 从https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&scope=manage_pages,publish_stream,offline_access&response_type=token手动获取token
- 在这种情况下,redirect_uri 可以是任何东西,我们只希望发送回 url 令牌参数
- 复制从 URL 发回的令牌(如果一切顺利,响应中的 expires url 参数设置为 0)
- 然后我基本上做了这个 PHP 脚本:
require_once('facebook-sdk/facebook.php');
//Required facebook auth vars
$appID = 'APP_ID';
$appSecret = 'APP_SECRET';
$pageID = 'PAGE_ID';
$appOfflineToken = 'TOKEN_RETURNED_IN_PREVIOUS_STEP';
$pageTokenURL = 'https://graph.facebook.com/me/accounts?access_token=';
$access_token = '';
//connect to facebook app
$facebook = new Facebook(array(
'appId' => $appID,
'secret' => $appSecret,
'cookie' => true
));
//get page managed pages information
$jsonData = file_get_contents($pageTokenURL.$appOfflineToken);
$content = json_decode($jsonData, true);
//filter access_token for desired page using pageID
foreach($content['data'] as $item) {
if($item['id'] == $pageID){
$access_token = $item['access_token'];
break;
}
}
//format post
$post = array(
'access_token' => $access_token,
'picture' => "http://URL_TO_PICTURE,
'link' => "http://URL_TO_NEWS_POST",
'name' => "NEWS_TITLE",
'description' => 'NEWS_DESCRIPTION'
);
//post content to page wall
$res = $facebook->api('/'.$pageID.'/feed', 'POST', $post);
所以我的问题是......即使这看起来很牵强......它是否正确?好吧,至少它有效!
PS:对链接感到抱歉,但只能在这篇文章中提交 2 个......似乎没有足够的街头信誉:p
【问题讨论】:
-
你似乎是对的。无论如何,您为什么要手动执行此操作?
-
好吧,因为事实证明,您只需要发出一次应用程序 offline_access 访问令牌......但是我确实更新了脚本以包含故障安全,以防令牌因某种原因而消失一个新的令牌(因为在文档中他们说offline_access 令牌是长寿的,他们只是没有说多久)。我主要发布这个是因为我在谷歌上发现的大部分内容都没有涵盖让网站中的新闻更新与页面墙同步的想法......也因为我不确定这个过程是否正确,如果它是某种“黑客” " 或者如果有其他方式:P
-
offline_access将在几周内被弃用。但是,您现有的(永不过期)访问令牌将继续有效。无论如何检查developers.facebook.com/docs/offline-access-deprecation
标签: facebook facebook-graph-api file-get-contents json facebook-wall