昨天我更改了应用程序设置并启用了“新数据权限”和“新 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 - 任何提示将不胜感激谢谢