2013-11-21 181 views
0

場景:Facebook上發佈照片

  • 用戶已經完成了OAuth的過程,並給我們的應用程序publish_actions,publish_stream,user_friends和user_photos權限。
  • 雖然我們已經從用戶登錄的用戶令牌,我們已檢索並堅持用戶的Facebook ID
  • 此外,同時,我們有用戶令牌,我們已經創建了一個相冊,後來發佈照片並堅持了Facebook相冊ID
  • 注意:我們沒有堅持了傳統的用戶令牌方面的原因
  • 在稍後的時間,我們試圖將照片張貼到使用下面的代碼之前創建的相冊:

    FacebookClient client = null; 
    Dictionary<string, object> parameters = null; 
    string path; 
    FacebookMediaObject media = null; 
    
    client = new FacebookClient(); 
    client.AppId = "{our app id}"; 
    client.AppSecret = "{our app secret}"; 
    
    media = new FacebookMediaObject(); 
    media.ContentType = "image/jpg"; 
    media.FileName = "AnyAllContactTypesProblem.jpg"; 
    media.SetValue(File.ReadAllBytes(Server.MapPath(".") + "\\" + media.FileName)); 
    
    parameters = new Dictionary<string,object>(); 
    parameters.Add("name", 
           "Test Image 1"); 
    parameters.Add("source", 
           media); 
    
    path = "/" + "{album id}" + "/photos"; 
    
    dynamic result = client.Post(path, 
              parameters); 
    

該POST操作的結果在下面的例外:

(OAuthException - #102) A user access token is required to request this resource. 

Facebook的文檔指示一個「應用程序標記」,這是從應用程序的ID和應用程序祕密衍生可被用作該接入令牌上發佈相片代表某人,只要publish_stream權限已提供給它在我們的案例中的應用程序。

我們是否錯過了上述代碼中的某些內容,或者Facebook是否更改了發佈照片所需的權限?

在此先感謝。

回答

0

我不從哪兒讀這 -

的「應用程序令牌」,這是從應用程序ID和應用程序的祕密派生可以作爲訪問令牌張貼照片上的人是知道只要publish_stream權限已提供給它在我們的案例中使用的應用程序。

但是這是不是是真的。獲得publish權限後,您可以在牆上發佈報道/供稿,並使用應用訪問令牌獲取基本信息。張貼照片是不允許的!以下是文檔所述的內容 -

應用程序訪問令牌也可用於向已向您的應用程序授予開放式圖形發佈權限的人向Facebook發佈內容。
Reference

一件事,你可以做 -

保存擴展標記到你的服務器(即期滿60天,之後用戶必須再次通過登錄來獲得新令牌),獲得擴展的令牌 -

GET /oauth/access_token? 
    grant_type=fb_exchange_token&   
    client_id={app-id}& 
    client_secret={app-secret}& 
    fb_exchange_token={short-lived-token} 
+0

我確實有一個鏈接到我得到關於應用程序令牌的「轉述」的頁面。我們目前正在使用的僅有「應用令牌」上傳照片的已棄用的REST API中可能有信息。最近,使用已棄用的REST API的照片上傳已停止爲部分用戶(但不是所有用戶)上傳照片。這是我們改用SDK/Graph API的主要原因。你知道爲什麼棄用的REST API方法已停止爲某些用戶工作嗎? 將「photo_upload」添加到用戶授予我們的應用程序的權限會改變什麼? – user3006515

+0

對不起,但不知道這一個 –