2013-11-21 186 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

对不起,但不知道这一个 –