我在使用权限上传到特定Facebook相册时遇到问题。
我被设置为特定Facebook页面的管理员,但每当我试图上传照片时,我似乎都无法访问。
我得到的错误是:
致命错误:未捕获OAuthException:(#120)引发的相册id无效
如果我使用Graph资源管理器进行浏览,我可以在不需要任何访问令牌的情况下查看此相册。
我使用的URL是https://graph.facebook.com/albumId/photos
我试图上传的相册是我在Facebook中创建的Facebook页面中的相册。
我设置的权限是:
- 用户照片
- 好友_照片
- publish_actions
- 管理页面
- publish_stream
- 照片上传
感谢您的帮助。
首先,检查用户是否已登录:
function getLoginStatus() {
FB.getLoginStatus(function (response) {
if (response.status === 'connected') {
// the user is logged in and connected to your
// app, and response.authResponse supplies
// the user's ID, a valid access token, a signed
// request, and the time the access token
// and signed request each expire
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
getPageAccess();
} else if (response.status === 'not_authorized') {
// the user is logged in to Facebook,
//but not connected to the app
logIn();
} else {
// the user isn't even logged in to Facebook.
logIn();
}
});
}
然后获取与用户关联的页面访问令牌:
function getPageAccess() {
FB.api('/PAGE_ID?fields=access_token', function (resp) {
var pageAccessToken = resp.access_token;
});
}
这似乎是一个常见的问题。如果你想模仿Facebook页面(也就是说,充当页面本身进行上传、发布和共享),你必须首先获得该页面的访问令牌:
- 使用用户访问令牌向"/me/accounts"发出GET请求
- 循环结果集并查找页面(注意每个项目的类别属性,跳过"应用程序",因为它被视为帐户)
- 存储该页面的
access token
然后(使用PHP SDK):
$page = '432652662'; // Your page id
$album = '128949205'; // Your album id
$source = 'mypic.png';
$payload = array('source' => '@' . $source,
'access_token' => 'page access token');
// Upload photo for specific page and album
$sdk->api("/$page/$album/photos", 'POST', $payload);
好的,我想我已经找到了解决方案。
如果你去https://graph.facebook.com/me/accounts
每个帐户都有自己的access_token。将图像上传到Facebook页面时,您需要将access_token作为参数传递。