2011-09-19 58 views
0

我正在使用Graph API來爲Facebook頁面選擇「fan of the week」,並自動將它們發佈到其供稿。OAuth令牌停止工作時該怎麼辦?

爲了宣傳訂閱源上的粉絲,我爲安裝該應用的用戶存儲了OAuth訪問令牌。但是有時令牌會失效,然後應用程序將無法發佈到Feed。

{ 
    "error" : { 
     "message" : "Error validating access token: The session has been invalidated 
     because the user has changed the password.", 
     "type" : "OAuthException" 
    } 
} 

這是錯誤的另一種類型我也得到有時:

{ 
    "error": { 
     "message": "Error validating access token: Session does not match 
     current stored session. This may be because the user changed the 
     password since the time the session was created or Facebook has changed 
     the session for security reasons.", 
     "type": "OAuthException" 
    } 
} 

我已經有這些用戶的「offline_access」,但令牌仍然成爲無效有時。除了向用戶發送電子郵件,要求他們再次訪問應用程序頁面,以便我可以獲得新的OAuth令牌之外,還有什麼可以阻止這種情況發生?

回答

0

有沒有辦法解決這個問題,並不需要用戶的某種干預。如果這是一個應用程序或頁面,用戶不可能經常訪問,那麼發送該電子郵件聽起來像是一個好主意。當用戶訪問頁面或應用程序時,您可以使用FB Javascript SDK自動刷新會話,並使用更新數據庫中令牌的處理程序訂閱FB.Event.subscribe('auth.sessionChange')。

0

如果您嘗試發佈到用戶供稿,並且您尚未撤銷publish_stream權限,那麼您最可能仍然使用以下格式的access_token發佈到/ userId/feed:appid | appsecret。請注意,/我顯然不會工作,因爲您正在使用應用程序訪問令牌。

+0

謝謝,我試圖張貼到頁面飼料,但我會嘗試這一點。 – Bemmu

+0

我已經授權我的應用程序發佈到頁面126169047465269.但是,如果我嘗試執行curl -d「access_token = appid | appsecret&message = foo」「https://graph.facebook.com/126169047465269/feed」,我得到OAuthException 「用戶尚未授權應用程序執行此操作」 – Bemmu

+0

這適用於用戶授權publish_stream(而非offline_access)並且令牌在一小時後過期的情況。我認爲這可能值得一試。聽起來像你需要用戶回到你的應用程序來刷新令牌不幸的。 – bkaid