【问题标题】:Facebook Posting Photo using App Access TokenFacebook 使用应用访问令牌发布照片
【发布时间】:2013-11-21 17:07:15
【问题描述】:

场景:

  • 用户已完成 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 是否更改了发布照片所需的权限?

提前致谢。

【问题讨论】:

    标签: c# facebook facebook-graph-api facebook-c#-sdk


    【解决方案1】:

    我不知道你是从哪里读到这篇文章的-

    只要已向我们的应用程序提供了 publish_stream 权限,从应用程序 ID 和应用程序密钥派生的“应用程序令牌”就可以用作代表某人发布照片的访问令牌。

    但这不是正确的。获得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} 
    

    【讨论】:

    • 我确实有一个链接到我得到关于应用令牌的“释义”的页面。它很可能是我们目前仅使用“应用令牌”来上传照片的已弃用 REST API 中的信息。最近,使用已弃用的 REST API 上传的照片已停止为部分但并非所有用户上传照片。这是我们改用 SDK/Graph API 的主要原因。你知道为什么不推荐使用的 REST API 方法对某些用户停止工作了吗?将“photo_upload”添加到用户授予我们的应用程序的权限会改变什么吗?
    • 抱歉,不知道这个
    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    相关资源
    最近更新 更多