在Facebook Graph API中没有用户登录获取访问令牌?

时间:2013-01-22 00:59:57

标签: facebook-graph-api coldfusion facebook-javascript-sdk facebook-php-sdk

我正在使用facebook graph api rsvp_event。我正在使用javascript SDK。

当用户登录时,一切都很好用。但是当用户没有登录时,就会出错。

我需要有关谁参加公共活动的信息。我现在明白我需要一个访问令牌来检索这些信息。所以,我的问题是如果没有用户登录,如何获取访问令牌?是不可能或有解决方法?可以使用app_idclient_secret来完成服务器端吗?

我正在开发一个ColdFusion页面,但如果需要我可以使用PHP。我支持两者。

我听说过* offline_access_permission *这个词。他们已删除此功能。可以在它仍然可用时完成吗?

修改

这可以通过test user实现吗?比如说,在服务器端我通过测试用户登录,获取事件信息(只是一个“获取”请求来读取参加活动的人),然后注销。在客户端,我做其余的事情(用户登录,rsvp到事件)。

我对“测试用户”或其目的不太了解。任何人都可以确认这是否可以实现?

提前致谢。

2 个答案:

答案 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进程。