使用应用访问令牌向朋友的墙发布消息

时间:2013-05-20 00:59:42

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

我想让我的应用程序发布到朋友的墙上。我尝试使用FB.api方法,但我发现使用它已被禁用。

然后我尝试使用FB.ui提要对话框,但之后我发现消息参数已被弃用,因为Facebook希望其用户输入文本而被删除。即使用户输入文本,该消息也不会发布到该用户的墙上。

因此,在做了更多研究后,我发现另一种选择是创建一个自定义动作类型。在这样做的过程中,我发现采用这种方法我的应用程序需要一个app访问令牌。

所以我尝试使用以下方法:

FB.api('https://graph.facebook.com/oauth/access_token','get',
{client_id:'XXXXXXX', client_secret:'XXXXXXXXXXX', grant_type:'client_credentials'},
function(response) {
});

与文档中的内容没有任何不同之处:

GET https://graph.facebook.com/oauth/access_token?
        client_id=YOUR_APP_ID
       &client_secret=YOUR_APP_SECRET
       &grant_type=client_credentials

我收到的错误如下:

'未捕获的ReferenceError:XXXXXXXXXXXXXXXXXXXXX未在我使用时定义

Ext.data.JsonP.request({
url : 'https://graph.facebook.com/oauth/access_token',
params : {
 client_id : 'XXXXXXXXXXXXXXXXXXXX',
 client_secret : 'XXXXXXXXXXXXXXXXXXXXX',
 grant_type : 'client_credentials'
},
success : function(response, opts) {
},
failure : function(response, opts) {
}

});

OR

我使用

时,

{type:'http',消息:'未知错误'}

FB.api('https://graph.facebook.com/oauth/access_token','get',
{client_id:'XXXXXXX', client_secret:'XXXXXXXXXXX', grant_type:'client_credentials'},
function(response) {
});

现在文档说当我执行以下操作时:

GET https://graph.facebook.com/oauth/access_token?
        client_id=YOUR_APP_ID
       &client_secret=YOUR_APP_SECRET
       &grant_type=client_credentials

我应该在我的响应对象中获得以下内容:

=的access_token YOUR_APP_ACCESS_TOKEN

现在从我所做的看来,我已经按照文档的方向进行了操作,但我的问题是为什么我没有得到文档所说的正确输出?

请帮忙。

1 个答案:

答案 0 :(得分:0)

FB.api来自graph.facebook.com端点,因此您无需明确添加graph.facebook.com

我现在不在电脑上,但我认为电话更像是

FB.api('oauth/access_token'

虽然我不确定FB.api是否接受明文响应,但我相信它是专为JSON响应而设计的。

将来检查您的浏览器开发工具以查看您通过JS SDK实际执行的HTTP GET