正在将图像上载到特定的Facebook相册


Uploading an image to a specific Facebook Album

我在使用权限上传到特定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页面(也就是说,充当页面本身进行上传、发布和共享),你必须首先获得该页面的访问令牌:

  1. 使用用户访问令牌向"/me/accounts"发出GET请求
  2. 循环结果集并查找页面(注意每个项目的类别属性,跳过"应用程序",因为它被视为帐户)
  3. 存储该页面的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作为参数传递。