使用Graph API在没有offline_access的情况下发布到粉丝页面?

时间:2012-02-22 22:31:54

标签: facebook facebook-graph-api

我需要制作一个网络应用程序来管理帖子,有时我会在Facebook上发布一条简短的促销信息(取决于帖子上的标准)。

现在可以使用offline_access权限:创建应用程序A,请求manage_pages,offline_access,publish_stream权限,使用该访问令牌,您可以在想要图形api时连接并发布到页面。

由于offline_access已被弃用,并将于2012年5月删除,我想知道如何发布到公司的不同页面。

我无法实现任何OAuth身份验证机制,因为使用Web应用程序的最终用户将无法访问作为页面管理员的fb帐户,并且发布到facebook应该在后端进程中发生,而不是与用户。

我找到的解决方法是通过在管理用户流上发布并标记页面(仅需要publish_stream)来发布到页面,但是图谱API会被窃听,并且不允许您在帖子中进行标记。在代码(Ruby + Koala)中,它将是这样的:

oauth = Koala::Facebook::OAuth.new("app-key", "app-secret", nil)
api = Koala::Facebook::API.new(oauth.get_app_access_token)
api.put_wall_post("message @[page-id:1:page-name]", {}, "admin-user")

唯一的问题是a bug in the facebook API阻止您将帖子中的内容标记到您的信息流中。

这种模式不再受支持吗?任何人都知道任何解决方法吗?

2 个答案:

答案 0 :(得分:2)

您可以在应用中增加2个表格列,即short_access_token& long_access_token。

用户验证您的应用后,会生成一个访问令牌,并将其存储在short_access_token中。然后将此访问令牌传递给:

https://graph.facebook.com/oauth/access_token? CLIENT_ID = APP_ID&安培; client_secret = APP_SECRET&安培; grant_type = fb_exchange_token&安培; fb_exchange_token = EXISTING_ACCESS_TOKEN

运行此操作后,将生成具有60天有效期的访问令牌。将其存储在long_access_token中。现在,使用此long_access_token 60天。

您可以添加另一个条件,如果30天前生成了long_access_token,只需使用short_access_token并生成新的lon_access_token。

您每天只能生成一次长期访问令牌,即第一次。使用此长期访问令牌来管理paes(如果您已获得权限)。

参考:https://developers.facebook.com/roadmap/offline-access-removal/

答案 1 :(得分:0)

您唯一的解决方法是让应用用户页面管理员可以访问各个页面,因此当您发布到页面的墙上时,它可以作为页面发布,而不是作为用户发布。但是,您只能将每个Facebook新规则的“有效”用户访问令牌扩展到60天。但是使用该60天用户令牌,您可以获得60页访问令牌,因此您可以将该页面发布到页面。

如果您没有要求将页面作为页面发布到页面,那么在不将该用户作为页面管理员附加的情况下执行此操作非常简单。让他们成为普通用户。