PHP上传照片到用户Facebook墙仅使用PHP


PHP upload photo to users facebook wall using php only

我正在尝试编写一个php脚本,可以将每日照片上传到我的个人Facebook墙上。我需要随时执行此操作,而不仅仅是在登录时完成。 我想知道是否可以仅使用 php 将照片上传到我的墙上,或者我是否需要使用具有正确权限的应用程序。如果是这样,我是否必须亲自安装该应用程序并为我的页面提供正确的权限才能实现这一点,如果可能的话,这可以自动完成吗?

我想做什么:简而言之,我希望用户推特提要被转换并放在图像上。我已经有自动执行此操作的脚本。但是,如果在 Twitter 用户发推文后,我会喜欢它,然后调用我的脚本并将其转换为图像(我再次已经完成了这段代码),但是......

现在我需要一个脚本,可以在创建图像后自动将其上传到我的个人墙。这可能吗?

好吧,您可以使用扩展用户访问令牌使其最多工作 60 天。之后,令牌将过期,然后您必须刷新令牌,如果没有用户的交互,这是不可能的

文档声明相同:

即使是长期存在的访问令牌最终也会过期。在任何时候,你都可以通过将人员发送回您的 Web 应用使用的登录流来生成新的长期令牌 - 请注意,此人实际上不需要再次登录,他们已经授权了您的应用,因此他们将立即使用刷新的令牌从登录流重定向回您的应用 - 此人对此的显示方式将根据您的登录流类型而有所不同正在使用,例如,如果您使用的是 JavaScript SDK,这将在后台进行,如果您使用的是服务器端流,浏览器将快速重定向到登录对话框,然后自动立即再次返回到您的应用程序。

完成上述操作后,您将获得一个新的短期令牌,然后您需要对上述长期令牌执行相同的交换。

要获取扩展令牌,请从服务器进行以下调用:

GET /oauth/access_token?  
   grant_type=fb_exchange_token&           
   client_id={app-id}&
   client_secret={app-secret}&
   fb_exchange_token={short-lived-token} 
<小时 />

法典

$app_id = APP_ID;
   $app_secret = APP_SECRET;
   $post_login_url = APP_URL;
   $album_name = 'test';
   $album_description = 'desc';
   $code = $_REQUEST["code"];
   //Obtain the access_token with publish_stream permission 
   if(empty($code))
     {
       $dialog_url= "http://www.facebook.com/dialog/oauth?"
       . "client_id=" . $app_id 
       . "&redirect_uri=" . urlencode($post_login_url)
       . "&scope=publish_stream";
       echo("<script>top.location.href='" . $dialog_url . 
       "'</script>");
   } 
   else {
   
     // access token
     $token_url= "https://graph.facebook.com/oauth/"
     . "access_token?"
     . "client_id=" .  $app_id 
     . "&redirect_uri=" . urlencode( $post_login_url)
     . "&client_secret=" . $app_secret
     . "&code=" . $code;
     $response = file_get_contents($token_url);
     $params = null;
     parse_str($response, $params);
     $access_token = $params['access_token'];       // <---
    
     // extended token
     $extended_token_url= "https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=".$app_id."&client_secret=".$app_secret."&fb_exchange_token=".$access_token; 
     $response = file_get_contents($extended_token_url);
     $params = null;
     parse_str($response, $params);
     $extended_access_token = $params['access_token'];  //  <---
     // Upload to the photos to the album here
}

这是完整的身份验证过程,包括扩展令牌。您可以找到许多有关上传照片的帖子,只需在通话中使用$extended_access_token即可。

(如果您不知道,Graph API Explorer是Facebook测试API的绝佳工具)。

祝你好运!