我正在使用facebook graph api rsvp_event。我正在使用javascript SDK。
当用户登录时,一切都很好用。但是当用户没有登录时,就会出错。我需要有关谁参加公共活动的信息。我现在明白我需要一个访问令牌来检索这些信息。所以,我的问题是如果没有用户登录,如何获取访问令牌?是不可能或有解决方法?可以使用app_id
和client_secret
来完成服务器端吗?
我正在开发一个ColdFusion页面,但如果需要我可以使用PHP。我支持两者。
我听说过* offline_access_permission *这个词。他们已删除此功能。可以在它仍然可用时完成吗?
修改
这可以通过test user
实现吗?比如说,在服务器端我通过测试用户登录,获取事件信息(只是一个“获取”请求来读取参加活动的人),然后注销。在客户端,我做其余的事情(用户登录,rsvp到事件)。
我对“测试用户”或其目的不太了解。任何人都可以确认这是否可以实现?
提前致谢。
答案 0 :(得分:2)
您确定您确实需要用户的访问令牌吗?根据文档here,您可能需要:
- a generic access_token for public events (those whose privacy is set to OPEN)
- a user access_token for a user who can see the event for non-public events
- an app access_token (for non-public events, must be the app that created the event)
- a page access_token (for non-public events, must be the page that created the event)
您可以在此处获取有关如何获取这些令牌的信息https://developers.facebook.com/docs/concepts/login/access-tokens-and-types/
当您有权访问该事件时 - 当某个用户登录时,一个好主意可能是存储参与用户(在数据库中)。
更新从FileContent获取数据。
我不知道您指的是什么API响应,但根据我的经验,他们返回数据: - 使用JSON序列化 - 您需要使用DeserializeJSON(),例如:
local.returnStruct = DeserializeJSON( local.requestResult.FileContent );
或
local.returnStruct = DeserializeJSON( local.requestResult.FileContent.toString() );
发送类似于URI的内容。我正在使用函数来获取数据:
function getStructFromQueryString( queryString ) {
var ret = StructNew();
var i = 0;
var key = '';
for(i=1; i LTE ListLen(arguments.queryString,'&'); i++) {
key = ListGetAt(arguments.queryString, i, '&');
ret[ListFirst(key,'=')] = URLDecode(ListLast(key,"="));
}
return ret;
}
答案 1 :(得分:1)
基本上你想要的是一个刷新令牌,当用户离线时可以访问令牌,不幸的是,据我所知,facebook不再提供它们。
要了解有关oauth2请求的更多信息,可以使用https://developers.google.com/oauthplayground/来理解oauth2进程。