簡體   English   中英

android將facebook令牌發送到服務器並發布到feed

[英]android sending facebook token to server and publishing to feed

在我的應用程序中,我要求用戶通過Facebook登錄,然后將接收到的令牌發送到服務器,並從該服務器發布到用戶時間軸。

我使用sromku簡單的Facebook包裝器。 我要求這些權限:

Permission[] permissions = new Permission[] {
    Permission.USER_PHOTOS,
    Permission.EMAIL, Permission.PUBLISH_ACTION,
    Permission.PUBLIC_PROFILE, Permission.READ_FRIENDLISTS,
    Permission.USER_ABOUT_ME
};

問題是,如果我從Android應用程序將Feed對象發布給用戶,則發布該對象沒有問題,但是當我嘗試從服務器執行相同操作時,我得到了:

(#200) The user hasn't authorized the application to perform this action'

如果我請求令牌的可用權限,則會得到:

installed [status] => granted
public_profile [status] => granted
email [status] => granted
read_friendlists [status] => granted
user_activities [status] => granted
user_photos [status] => granted
user_about_me [status] => granted

沒有publish_actions和publish_stream(沒有選擇在我知道的簡單Facebook中問這個問題)。

也許有人可以幫助我確定問題出在哪里?

[編輯]列出從原始facebook會話檢索到的權限(帶有:simpleFacebook.getSession()。getPermissions())對象后,我看到:

Permission: public_profile
Permission: email
Permission: contact_email
Permission: read_friendlists
Permission: user_activities
Permission: user_photos
Permission: user_about_me

這確實很奇怪,因為它沒有列出我的publish_actions權限,但仍成功發布到了我的提要。

根據https://github.com/sromku/android-simple-facebook/blob/master/Simple%20Facebook/src/com/sromku/simple/fb/Permission.java#L46的規定 ,應該可以請求PUBLISH_ACTION權限,就像您的代碼中已有的一樣。

我猜您不是在使用應用程序的管理員/測試人員/開發人員用戶? 然后,您必須先通過Facebook應用程序審查,然后才能請求擴展權限,如https://developers.facebook.com/docs/apps/review/login#do-you-need-review中所述

我正在使用這種方法:

publish(feed, true, new OnPublishListener() {});

它會打開webview對話框,所以我實際上是在Facebook上發帖的,這就是為什么我不需要權限。 當我更改為:

publish(feed, new OnPublishListener() {});

我有一個對話框,我必須在其中接受發布權限。 之后,我可以將令牌從服務器發布到Facebook上。

這里的問題是,我認為如果在創建SimpleFacebook obect之前指定所有權限,然后調用登錄方法,我將獲得所有權限。 但這僅適用於讀取權限。 要獲得發布權限,您必須在登錄后顯式調用requestNewPermissions方法,以獲取所需的發布權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM