2012-02-13 47 views
3

我无法使用权​​限上传到特定的Facebook专辑。将图像上传到特定的Facebook专辑

我设置为特定Facebook页面的管理员,但每当我尝试上传照片时,我似乎都无法访问它。

我得到的错误是:

Fatal error: Uncaught OAuthException: (#120) Invalid album id thrown

如果我探讨使用图形浏览器中,我可以看到这张专辑,而不需要任何访问令牌。

我使用的URL是https://graph.facebook.com/albumId/photos

我要上传这张专辑是一个Facebook页面内的专辑,这是我在Facebook创建的。

我设置的权限包括:

  • user_photos
  • friends_photos
  • publish_actions
  • manage_pages
  • publish_stream
  • photo_upload

任何帮助表示赞赏。

回答

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; 
      }); 
     } 
0

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

如果你去https://graph.facebook.com/me/accounts

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

1

这似乎是一个常见的问题。如果您想模仿Facebook页面(即充当页面本身的上传,发布和共享),您必须先获得该页面的访问令牌:

  1. 发出GET请求以“/ me/accounts “使用令牌
  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);