2012-08-29 72 views
1

我創建了申請aditional權限read_stream和publish_stream的Facebook應用程序。 當用戶接受應用程序,並允許應用程序讀取帖子,當我嘗試使用fql查詢獲得帖子時,我得到空結果。如何使用應用程序訪問令牌從特定用戶讀取流

這裏是代碼

$appAccessToken = APP_ID|APP_SECRET 
$fql = 'SELECT post_id, type, likes, source_id, created_time, privacy, comments FROM stream WHERE source_id = xxxxxxxxxxxxx'; 
$param = array(
    'method' => 'fql.query', 
    'query'  => $fql, 
    'callback' => '', 
    "access_token" => $appAccessToken 
); 
$fqlResult = $facebook->api($param); 

和結果空數組

Array ( )

我可以使用user_access_token( 「的access_token」= $ facebook-> getAccessToken(),用於活動用戶的結果得到; )甚至在fql查詢中沒有訪問令牌。

問題是我需要訪問所有正在使用應用程序的用戶帖子,而不僅僅是用於活動用戶。閱讀離線用戶流的最佳方式是什麼?

回答

1

你可以申請長期居住的訪問令牌

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

,但你不能使用一個應用程序訪問令牌讀取私人用戶流。您只能使用用戶access_token閱讀他們的流,因爲它是用戶權限,因此需要他們的訪問令牌來驗證他們已使用該權限對您的應用程序進行了身份驗證。事實上,如果你看一下文檔的流表,它提到你只能讀它爲當前會話的用戶(這是第1 2個要點上面的句子)

https://developers.facebook.com/docs/reference/fql/stream/ 

的應用程序訪問令牌應該能夠儘管用戶閱讀公共帖子。

我不確定這會對存儲長期存取令牌產生什麼影響,因此您必須進行研究以確保不違反任何TOS。

+0

謝謝湯米。所以如果我理解正確,我必須獲得長期存在的用戶訪問令牌。在使用'$ access_token = $ facebook-> getAccessToken();'獲取標記之前,使用PHP SDK將使用'$ facebook-> setExtendedAccessToken();'然後將其存儲在db中以便稍後使用它。還應該在應用高級設置中啓用remove_access權限 – user1633755

相關問題