Facebook 不了解何时需要用户\u令牌而不是访问\u令牌
我很难理解FB如何确定是否需要用户令牌或访问令牌。 无论如何,我并没有使用Facebook进行身份验证,我真的不想这样做 我正试图将我们Facebook群组的信息显示到我们的论坛上 根据Graph API,/group id/feed需要:Facebook 不了解何时需要用户\u令牌而不是访问\u令牌,facebook,facebook-graph-api,facebook-access-token,facebook-group,Facebook,Facebook Graph Api,Facebook Access Token,Facebook Group,我很难理解FB如何确定是否需要用户令牌或访问令牌。 无论如何,我并没有使用Facebook进行身份验证,我真的不想这样做 我正试图将我们Facebook群组的信息显示到我们的论坛上 根据Graph API,/group id/feed需要: 需要具有用户组权限的组成员的用户访问令牌 应用访问令牌可以读取它在属于它的应用和游戏组中发布的帖子 /组id/事件仅需要: 具有用户组权限的组成员的用户访问令牌 文本有点离题,但在我看来,它传达了关于“用户访问令牌”的相同想法 根据FB,代替用户访问
- 需要具有用户组权限的组成员的用户访问令牌
- 应用访问令牌可以读取它在属于它的应用和游戏组中发布的帖子
- 具有用户组权限的组成员的用户访问令牌
- 代码:102
- 消息:“请求此资源需要用户访问令牌。”
- 类型:OAutheException
$(function () {
var location = document.URL;
var ShowGroup = false;
var group_id = null;
if (location.indexOf("chattanooga-lodge") != -1) {
group_id = "";
ShowGroup = true;
}
if (ShowGroup) {
$("#FBfeedContainer").show();
// Initialize Facebook JavaScript API
window.fbAsyncInit = function () {
FB.init({
appId: 'app-id',
xfbml: true,
version: 'v2.0'
});
//FB News Posts
FB.api(
"/" + group_id + "/feed",
{ access_token: "app-id|app-secret" },
function (response) {
debugger;
if (response && !response.error) {
$.each(response.data, function (index, data) {
if (index < 3) {
$("#FBfeed").append(data.id);
}
});
}
}
);
//FB Events
FB.api(
"/" + group_id + "/events",
{ access_token: "app-id|app-secret" },
function (response) {
debugger;
if (response && !response.error) {
$.each(response.data, function (index, data) {
if (index < 3) {
$("#FBfeed").append(data.id);
}
});
}
}
);
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) { return; }
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
});
$(函数(){
var location=document.URL;
var ShowGroup=false;
var group_id=null;
如果(地点indexOf(“查塔努加小屋”)!=-1){
组_id=“”;
ShowGroup=true;
}
if(显示组){
$(“#FBfeedContainer”).show();
//初始化Facebook JavaScript API
window.fbAsyninit=函数(){
FB.init({
appId:“应用程序id”,
xfbml:是的,
版本:“v2.0”
});
//FB新闻发布
FB.api(
“/”+组id+“/feed”,
{access_令牌:“app id | app secret”},
功能(响应){
调试器;
if(response&&!response.error){
$.each(response.data,函数(索引,数据){
如果(指数<3){
$(“#FBfeed”).append(data.id);
}
});
}
}
);
//餐饮活动
FB.api(
“/”+组id+“/事件”,
{access_令牌:“app id | app secret”},
功能(响应){
调试器;
if(response&&!response.error){
$.each(response.data,函数(索引,数据){
如果(指数<3){
$(“#FBfeed”).append(data.id);
}
});
}
}
);
};
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){return;}
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
}
});
如果不使用任何用户身份验证,您将无法获取组的事件。正如您已经指出的,关于组id/feed(需要用户访问令牌或应用程序访问令牌)和组id/events(需要用户访问令牌)端点的权限。由于您通过组合应用id和应用机密创建了应用访问令牌,因此您能够获取提要数据
Facebok API中的每个数据点都受到权限的严格保护。其中一些是公开的,另一些是通过不同类型的访问令牌访问的,这取决于Facebook发现哪些人可以访问。你可以在这里了解更多
为了在网页上显示小组活动,您可能需要做一些变通。您必须创建自己的访问令牌并对其进行硬编码。显然,您不应该在Javascript中这样做,但是用户PHP API我认为不需要用户登录Facebook的最简单方法是
<?php
# facebookEvents.php
$FacebookID = '';
$APP_ID='';
$APP_SECRET='';
header('Content-Type: application/json');
print_r(file_get_contents("https://graph.facebook.com/$FacebookID/events?access_token=$APP_ID|$APP_SECRET"));
?>
应用程序仪表板上提供的应用程序ID和应用程序机密
组合应用程序的应用程序id和应用程序机密将创建应用程序访问令牌。不是用户访问令牌。这就是为什么文档中说用户访问令牌和应用程序访问令牌。如果您注意到我从API文档中粘贴的内容,那么提要和事件都说它们需要用户令牌。正如我还说过的,API文档说您可以使用应用程序访问令牌代替用户访问令牌。另外,正如我所说的,在一种情况下,应用程序令牌有效,而在另一种情况下则无效。唉,你看到我贴的东西了吗?我想知道为什么会有不一致的地方,或者我遗漏了什么。哪里说你可以使用应用程序访问令牌而不是用户访问令牌?这是不对的。对于
/{group id}/events
您复制的文档说它必须是用户访问令牌。对于/{groupid}/feed
,您复制的文档说appaccesstoken只能访问app和游戏组。要访问其他组,您必须使用属于该组的用户访问令牌,并已授予您用户组权限。您收到的错误消息说您必须使用用户访问令牌App才能访问它所属的游戏组。但是我创建了这个应用程序,我的朋友创建了这个群,他们之间没有任何联系。(除非是倒计时