xtk*_*ler 35 javascript facebook client-side facebook-graph-api oauth-2.0
我从未使用Facebook的Graph API或OAuth.我只是想使用Graph API获取公共Facebook页面的源,但它需要访问令牌.我不想麻烦用户登录并允许访问获取他们的令牌.Facebook应用程序访问令牌可用于获取公共提要,但我试图完全用Javascript完成此操作,因此我无法使用应用程序密钥来执行此操作.我在某处读到Facebook应用程序访问令牌永远不会过期或更改,除非我手动重置密码.这是真的?在Access Token中硬编码是否安全?如果没有,是否有某种方式我可以验证应用程序获取令牌而不必涉及用户?我可以使用某种类型的通用app令牌吗?
McN*_*Nab 78
如果你和我一样,你的客户不会想要一个标准的Facebook Likebox插件,他们会希望它们都采用自己的方式设计和定制.
你不需要整天花在官方文档上,想知道是否有任何一个适用于你这样简单的事情,这很容易.之所以会产生混淆,是因为您假设所有这些密钥和秘密ID都必须从Facebook页面获得许可或身份验证,而您需要从中提取 - 您不需要.您只需要一个有效的应用程序,您就可以获得任何公共页面的Feed.
在Facebook上设置您的应用程序,它将为您提供应用程序ID和API密钥.获取所需公共页面Feed的个人资料ID,这就是您所需要的.然后,您可以使用以下代码检索身份验证令牌,然后使用该代码将Feed数据作为JSON对象返回.
<?php
function fetchUrl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
// You may need to add the line below
// curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
$feedData = curl_exec($ch);
curl_close($ch);
return $feedData;
}
$profile_id = "the_profile_id_of_the_page_you_want";
//App Info, needed for Auth
$app_id = "your_app_id_in_here";
$app_secret = "your_app_secret_in_here";
//Retrieve auth token
$authToken = fetchUrl("https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id={$app_id}&client_secret={$app_secret}");
$json_object = fetchUrl("https://graph.facebook.com/{$profile_id}/feed?{$authToken}");
Run Code Online (Sandbox Code Playgroud)
感谢编辑有人建议我认为这些代码来自这里(看起来很熟悉:))并且在那里的评论中有更多信息可能有所帮助.
然后你可以解析对象,这里有一些代码可以在PHP中基于这个线程来完成它;
$feedarray = json_decode($json_object);
foreach ( $feedarray->data as $feed_data )
{
echo "<h2>{$feed_data->name}</h2><br />";
echo "{$feed_data->message}<br /><br />";
}
Run Code Online (Sandbox Code Playgroud)
要找出json对象中可用的内容,您可以在浏览器中输出url并将其复制/粘贴到这个有用的json可视化工具中;
http://chris.photobooks.com/json/default.htm
除非我手动重置密码,否则Facebook应用访问令牌不会过期或更改
那是对的.
除非重置App Secret,否则App令牌不会过期.应用访问令牌对每个应用都是唯一的.
由于公共提要采用任何有效的访问令牌,因此可以使用应用程序令牌.
转到https://developers.facebook.com/tools/access_token,您不需要流程.然后你可以硬编码.当你重置秘密时,这个方法是无效的.
$access_token = '1111111111|2Cha_1-n5'
$graph_url = "https://graph.facebook.com/Boo/posts?access_token="
. $access_token;
$page_posts = json_decode(file_get_contents($graph_url), true);
Run Code Online (Sandbox Code Playgroud)
然后遍历页面
foreach($page_posts['data'] as $post){
$post_link = $post['actions'][0]['link'];
$page_id = $post['from']['id'];
$page_name = $post['from']['name'];
$message = ($post['message']) ? $post['message'] : " ";
$name = ($post['name']) ? $post['name'] : " ";
$story = ($post['story']) ? $post['story'] : " ";
$post_time = $post['updated_time'];
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://philippeharewood.com/facebook/how-to-get-facebook-access-tokens-in-php-for-public-posts-the-basic-sauce/
如果您想在应用程序中使用页面提要(例如您自己的页面提要)以将其显示给其他人。只需使用您自己的access_token即可获取。
但!因为这不被认为是一个好的做法,您也可以使用页面或应用程序登录并使用他们的 access_token。
有关更多信息,请阅读有关身份验证的官方文档
归档时间: |
|
查看次数: |
65631 次 |
最近记录: |