【发布时间】:2013-12-15 20:50:13
【问题描述】:
我正在尝试将照片上传到经过身份验证的 Facebook 用户的特定相册。但是这张照片没有出现在相册中。它出现在名为“appname”Photos 的新相册中。我将尝试尽可能完整地描述我的方式 - 也许这可以帮助您找到我的错误。
我没有使用任何 Facebook 或第三方 SDK。项目编程语言是 C#(如果重要的话)。
首先,我通过将用户发送到以下 URL 来获取访问令牌:
https://www.facebook.com/dialog/oauth?client_id={0}&redirect_uri={1}&response_type={2}&scope={3}
- {0}:客户端 ID:我的应用程序 ID,由 Facebook 提供
- {1}:重定向 URI,设置为“https://www.facebook.com/connect/login_success.html”,因为我正在处理桌面应用程序
- {2}:响应类型:'token'
- {3}:范围 - 我请求的所有权限。这是以下项目的逗号分隔列表:
- manage_pages
- 电子邮件
- user_about_me
- user_photos
- user_videos
- publish_actions
- publish_stream
- user_likes
- user_activities
- user_groups
- 照片上传
- 视频上传
权限列表不仅适用于照片上传。
登录及其实现工作得很好,所以我在答案中得到了一个“access_token”和一个“expires_in”字段。
如果我还没有保存它,我将获取由访问令牌表示的经过身份验证的用户的用户 ID。这是通过一个简单的请求来完成的:
https://graph.facebook.com/me?access_token={0}
- {0} 是获取的访问令牌
这也很有效,我得到了带有姓名、电子邮件等和用户 ID 的积极响应。
下一个任务,获取与获取的访问令牌和用户 ID 关联的用户的专辑列表。这是通过 FQL 查询完成的:
SELECT aid,can_upload,created,name,description FROM album WHERE owner={0}
- {0} 是用户 ID
通过调用此 URL 执行 FQL 查询:
https://graph.facebook.com/fql?q={0}&access_token={1}
- {0} 上面的查询
- {1} 访问令牌
同样,这很好用——我得到了请求的字段。 'aid' 值稍后用作专辑 ID,格式为 99999999_999999999(中间有下划线的数字)。我只使用 can_upload 标志为“true”的专辑。
现在,我希望我拥有发布照片所需的所有信息。
我为此 URL 创建了一个 POST 请求,multipart/form-data:
https://graph.facebook.com/{0}/photos?access_token={1}
- {0} 是 9999999_999999 专辑 ID
- {1} 是来自登录的访问令牌
请求包含两个字段:“source”包含照片的二进制数据,“message”包含标题。
请求成功。我没有发现任何问题。
但是当我现在访问 Facebook 用户页面时,照片不在所选相册中,它们在名为“appname”照片的额外相册中。标题设置正确。
我必须进行哪些更改才能将照片直接带到所需的相册?
【问题讨论】:
标签: facebook facebook-graph-api facebook-opengraph