2012-02-22 86 views
3

我需要一個Web應用程序來管理崗位,當後由有時候我應該發表一個簡短的促銷消息,Facebook上的公司fanpages之一(根據在後標準)。使用圖表API發佈到粉絲頁面而無offline_access?

這是可能的,現在使用offline_access權限:創建應用程序A,要求manage_pages,offline_access,publish_stream權限和與訪問令牌,當你想在圖形API和後的頁面,您可以連接。

由於offline_access被取消,並打算在2012年5月被移除我不知道怎麼會是可以張貼到公司的不同頁面。

我無法實現任何OAuth身份驗證機制,因爲使用該Web應用程序的最終用戶將無法訪問頁面管理員的fb帳戶,並且發佈到Facebook應發生在不與後端進程交互用戶。

我發現的解決方法是通過發佈到管理員用戶流並標記頁面(這將只需要publish_stream)來發布到頁面,但Graph API已被竊聽,並且不允許您在帖子中進行標記。在代碼(紅寶石+考拉),這將是這樣的:

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

您可以在您的應用程序中增加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天。

如果long_access_token是在30天前生成的,則可以添加另一個條件,只需使用short_access_token並生成一個新的lon_access_token即可。

您只能每天一次(即第一次)生成長期存取令牌。使用這個長期存取令牌來管理paes(如果您已經獲得許可)。

編號:https://developers.facebook.com/roadmap/offline-access-removal/

+0

您提供的鏈接中包含了解決我的問題(場景5:頁面的訪問令牌),所以我接受當我第一次張貼了我的問題,你的answer.That頁面沒有完成。很好的發現。 – pigoz 2012-06-28 05:20:48

0

你唯一的解決方法是給各個頁面的應用程序的用戶頁的管理員權限,所以當你發佈到網頁的牆上,也可以張貼的頁面,而不是一個崗位作爲用戶。但是,您只能將每個Facebook新規則的「有效」用戶訪問令牌延長至60天。但是使用這60天的用戶令牌,您可以獲得60頁的訪問令牌,因此您可以將頁面作爲頁面發佈到頁面。

如果你沒有張貼到網頁的頁面的要求,那麼它很簡單做到這一點無需用戶安裝一個頁面的管理。讓他們成爲普通用戶。

相關問題