我的脸书应用程序可以从不同的Facebook帐户提供画廊服务吗?

问题描述:

我正在尝试为客户端提供Facebook图库,并且由于该网站正在托管在服务器上,因此该请求需要进行身份验证。我的脸书应用程序可以从不同的Facebook帐户提供画廊服务吗?

我已经使用我们公司的Facebook开发者帐户设置了一个应用程序。尽管我已将应用程序的域设置为我们客户的域,但请求中返回的图库为空。

我假设我需要访问客户的Facebook帐户,以便我可以创建一个应用程序直接与他们的Facebook帐户相关联 - 我想要的画廊?编辑 - 只是想我会指出,客户宁愿不给我他们的Facebook帐户的密码...

这是我用过的认证代码,如果任何人都会友好点出任何我可能犯的学校男孩错误。

$no_albums = 6; 
$latest_albums = null; 

$user_id = "xxxxxx"; 
$app_secret = "xxxxxxxxxxxxxxxxxxxx"; 
$app_token_url = "https://graph.facebook.com/oauth/access_token?" 
         . "client_id=" . $user_id 
         . "&client_secret=" . $app_secret 
         . "&grant_type=client_credentials" 
        . "&scope=user_photos"; 

$response = wp_remote_get($app_token_url); 
$access_token = $response['body']; 
error_log(print_r($response,true)); 

$query = 'https://graph.facebook.com/'.$user_id.'/albums?' . $access_token; 
$albums = json_decode(file_get_contents('http://graph.facebook.com/'.$user_id.'/albums')); 

这是我的错误日志中我得到($专辑)的响应:

Array 
(
    [headers] => Array 
     (
      [access-control-allow-origin] => * 
      [cache-control] => private, no-cache, no-store, must-revalidate 
      [content-type] => application/json; charset=UTF-8 
      [etag] => "1050253aec7b29caff644806927dabfa81406eee" 
      [expires] => Sat, 01 Jan 2000 00:00:00 GMT 
      [pragma] => no-cache 
      [x-fb-rev] => 812093 
      [x-fb-debug] => 9I0lRzV3GZxrflP/19iBvhly6FLUVI9jCHJAXcw0Dm0= 
      [date] => Mon, 13 May 2013 10:45:39 GMT 
      [connection] => close 
      [content-length] => 11 
     ) 

    [body] => {"data":[]} 
    [response] => Array 
     (
      [code] => 200 
      [message] => OK 
     ) 

    [cookies] => Array 
     (
     ) 

    [filename] => 

感谢。

这里有几个基本问​​题。

首先,在您的API请求中,您正在查找与您的APP_ID相关的专辑。没有了。您应该在对图API的请求中使用客户端的PAGE_IDUSER_ID

其次,您应该使用Facebook PHP SDK而不是file_get_contents()来提出您的要求。特别是如果这是一个生产环境。

如果您的客户相册是公开可见的,您可能不需要验证用户来查看它们。要知道这一点,你需要分享你的客户的Facebook用户名。

+0

感谢您的回复。我刚刚检查了我的$ app_id,就像客户端的USER_ID-糟糕的表单一样。我更新了变量名称。客户端的相册是可见的,因为我在没有身份验证的情况下从另一个服务器提供服务(我们为什么要从不同服务器提供站点的不同部分是有原因的) - 因此需要进行身份验证。至于SDK - 除了这是从Facebook的角度来看,这是可以接受的做事方式,是否可能使用SDK来解决问题,或者这只是作为最佳实践而强调的? – Ste77 2013-05-13 13:29:36

+0

SDK是最佳实践。当有一个完美的轮子可用时,你不会在这里尝试重新发明轮子。 – cpilko 2013-05-14 11:12:49

+0

你的代码还有很多其他问题。包括'APP_ID'和'USER_ID'是不同的,你不能使用非交互式的'wp_remote_get()'调用进行认证,你的'access_token'(如果有的话)还没有被使用。 – cpilko 2013-05-14 11:21:50