将图片上传到特定的Facebook相册

3
我在使用权限上传到特定的Facebook相册时遇到了问题。
我被设置为特定Facebook页面的管理员,但每当我尝试上传照片时,似乎无法获得访问权限。
我收到的错误信息是:
致命错误:未捕获的OAuthException:(#120) 抛出无效的相册id
如果我使用Graph Explorer进行探索,我可以看到此相册而无需任何访问令牌。
我正在使用的URL是https://graph.facebook.com/albumId/photos 我尝试上传的相册是我在Facebook内创建的Facebook页面中的相册。
我设置的权限包括:
- user_photos - friends_photos - publish_actions - manage_pages - publish_stream - photo_upload
感谢您的帮助。
3个回答

1
首先,检查用户是否已登录:
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;
            });
        }

1

这似乎是一个常见的问题。如果您想要模拟 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);

0

好的,我想我已经找到了解决方案。

如果您前往https://graph.facebook.com/me/accounts

每个帐户都有自己的access_token。当上传图片到Facebook页面时,您需要将该access_token作为参数传递。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接