情景:
稍后,我们尝试使用以下代码将照片发布到之前创建的相册中:
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文档表明,从app id和app secret派生的“app token”可以用作代表某人发布照片的访问令牌,只要已向应用程序提供了publish_stream权限即可在我们的情况下。
我们是否遗漏了上述代码中所需的内容,或者Facebook是否更改了发布照片所需的权限?
提前致谢。
答案 0 :(得分:0)
我不知道从哪里读到这个 -
从app id和app secret派生的“app token”可以用作代表某人发布照片的访问令牌,只要在我们的案例中为app提供了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}