使用Facebook _1263239已成功发布给用户's feed while the user is offline with only the publish_stream permission. I don' t需要offline_access权限 . 我在这里解释了我是怎么做到的:Facebook Stream Publish while offline
当用户离开时,我没有成功发布到页面 . 这是我的情景:
用户U是Page P. P的管理员,授权并安装我的应用程序 . U授权我的应用程序并授予我以下扩展权限:
-
publish_stream
-
manage_pages
一旦用户离线,如果我尝试使用相同的技术发布到用户的流(没有offline_access权限)而是发布到页面,我得到“用户没有授权应用程序执行此操作” . 这是技术:
1)获取我的应用程序的access_token
2)使用我的应用's access_token to publish to Page P'的Feed: POST https://graph.facebook.com/ / feed
如果在步骤2中使用代替,那么它会毫无问题地发布到用户的Feed . 但是,我想发布到Page的Feed . 是否有可能做到这一点?或者我是否需要用户的offline_access权限才能执行此操作?
谢谢,约翰尼
3 回答
问题是你需要使用访问令牌为通过获得的提交提供的页面...
呃...更容易说出来是这样的:
您的应用请求预先设置“manage_pages” - 一旦您接受/授予预授权,那么您有一个access_token用于应用程序预置(离线只会使expires = 0)
所以现在你的应用程序已预先管理你的页面,但它需要特定页面的令牌......
因此,如果您使用第一个令牌发出
/me/accounts
(或/UID/accounts
),您将获得应用程序可以访问的页面列表及其各自的令牌...从那里只需获取页面的标记,然后使用该标记发出命令
使用facebook类(
facebook.php
和cert文件)您应该看到一个页面ID列表及其访问权限...
通常我做一个
foreach $userdata['data']
并查找页面ID,然后我从该子阵列中获取令牌...全流程 - 四页示例(更容易编辑和理解示例)
所以配置只有基本的应用信息......
当你加载
index.php
- 它重定向到Facebook以获得页面的授权..(可能已经有这个...但覆盖所有基础)然后Facebook重定向回redirecturl(
backfromfb.php
)...Facebook将访问令牌作为哈希而不是get变量返回,因此该页面将使用哈希作为变量进行刷新...
然后它加载
PageUpdate.php
,它处理通过app / admin令牌的循环,并找到你要发布到的页面的正确值 .然后它构建帖子并提交它..
听起来你对大部分内容都有所了解......所以希望这会帮助你最后一点 .
config.php
index.php
backfromfb.php
PageUpdate.php
这是我的答案 . 上面的代码对我不起作用 . 但我为自己制作了一个,完美无缺 . 这是代码 .
服务器端代码:
客户端代码:
请从fb apps advance设置中禁用“删除offline_access权限:” . 通过选择禁用单选按钮 .