2012-11-28 69 views
1

在Android上使用beta 3.0 SDK,我打開一個帶有基本權限(電子郵件)的簡單session.openForRead()調用的Facebook會話。SDK 3.0 reauthorizeForPublish()失去讀取權限?

只要我想在用戶的牆上發佈消息,我正在使用session.reauthorizeForPublish()重新授權會話,其中包括ReauthorizeRequest對象中的新發布權限(publish_actions)。

只要最後一次請求成功,session.getPermissions()的調用只返回上次請求的權限(publish_actions),但失去所有先前的讀取權限(電子郵件)。

ReauthorizeRequest參數權限的文檔明確指出「請求的附加權限」,所以我目前不太清楚爲什麼會話在請求後失去所有其他權限?

非常感謝, 亞歷

回答

3

亞歷克斯,對不起你正在運行到這一點。這是我們在最終版本之前正在修復的SDK中的一個錯誤。與此同時,您可以嘗試一些解決方法。

  1. 雖然其權限的Session對象的概念是不與Facebook服務同步的,與會議有關的訪問令牌仍然有這些權限和仍然可以用於製作要求任何權限的圖形API調用它已被授予(當然,除非用戶後來撤銷了其中的任何一個)。因此,如果您的應用程序邏輯允許您忽略Session.getPermissions()調用的結果(例如,如果您的UI流意味着用戶必須在流程中的某個步驟之前已經授予了某個權限,那麼您可以認爲它存在),您可以繼續進行並調用需要這些權限的Graph API調用,而不管getPermissions所說的是什麼 - 有關與令牌關聯的權限的真實事實存在於服務中,而不在Session對象中。

  2. 如果您的應用程序的邏輯是這樣的,你需要檢查有一定的權限是否已授予,不幸的是,現在你可能需要通過聲明ArrayList<String>的地方,你追加新跟蹤的權限分開, 也許權限(可能在您的Session.StatusCallback中,只要會話已打開),並在會話關閉時清除它。 (每當狀態轉換爲OPENED_TOKEN_UPDATED並存儲結果時,您也可以撥打「我/權限」)。在真正的修復程序可用之前,應將此視爲臨時解決方法。希望這可以幫助。

+0

非常感謝您的詳細解答,我想我會堅持選項2.我是否也應該提交錯誤報告? – alexleutgoeb