昨天我更改了应用程序设置并启用了“新数据权限”和“新 SDK”。
之后,向用户墙发布消息的功能停止工作。在我的网站上,用户使用 facebook API (Graph) 登录并能够在他们的墙上发布消息。
这是我运行良好的旧代码:
功能publish_with_permission(权限,action_links,附件){
FB.ensureInit(函数(){
FB.Connect.requireSession(function(){
//检查用户是否已授予此权限
FB.Facebook.apiClient.users_hasAppPermission(权限,
功能(结果){
// 提示离线权限
如果(结果 == 0){
// 显示 facebook 权限对话框
FB.Connect.showPermissionDialog(权限,
函数(结果){
如果(!结果){
FB.Connect.streamPublish('', attachment, action_links, null, "发布这个:", jscallback);
} 别的 {
// 授予权限,发布时不使用 facebook 对话框
FB.Connect.forceSessionRefresh(function() {
FB.Connect.streamPublish('', attachment, action_links, null, "发布这个:", jscallback,true);
});
}
},真,空);
} 别的 {
// 权限已经授予,突然发布
// 没有 facebook 对话框
FB.Connect.streamPublish('', attachment, action_links, null, "发布这个:", jscallback,true);
}
});
});
});
}
该功能只是挂起,没有任何反应。我在这个论坛上搜索并找到了这个帖子
函数 fb_publish() {
FB.ui(
{
方法:'stream.publish',
message: '在这里留言。',
附件: {
名称:'Nom ici.',
caption: '这里有标题。',
描述: (
'这里的描述'
),
href: '这里的网址'
},
动作链接:[
{ 文本:'代码',href:'此处的操作网址'}
],
user_prompt_message: '这里是个人信息'
},
功能(响应){
if (response && response.post_id) {
alert('帖子已发布。');
} 别的 {
alert('帖子未发布。');
}
}
);
}
这个可行,但有两个问题 1) 即使用户第一次使用图形 API 登录并且他们已授予扩展权限以发布到他们的墙,此方法每次都会询问用户是否允许 - 上一个一个没有这样做。2)这种方法还允许用户添加他们的评论——我也不想要这个。
我想无缝地发布到墙上,而无需再次明确要求他们之前已经授予的许可。
我正在使用 PHP - 任何提示将不胜感激谢谢