我正在尝试编写一个php脚本,可以将每日照片上传到我个人的Facebook墙上。我需要在任何时候完成此操作,而不仅仅是在我登录时。我想知道是否可以使用php将照片上传到我的墙上,或者我是否需要使用具有正确权限的应用程序。如果是这样的话,我必须亲自安装该应用并为我的页面提供正确的权限才能实现,如果可能的话,这可以自动完成吗?
我想做什么: 简而言之,我希望将用户的Twitter提要转换并放在图像上。我有自动执行此操作的脚本。不过我会喜欢它,如果在Twitter用户推文之后,这会调用我的脚本并将其转换为图像(我已经完成了这个代码)但是......
现在我需要一个脚本,可以在创建图像后自动将其上传到我的个人墙上。这可能吗?
P.S。请不要贬低我。如果这是一个不好的问题,我可以将其删除或移动到另一个适合的形式。我只是不知道把它放在哪里。感谢
答案 0 :(得分:1)
好吧,您可以使用扩展用户访问令牌使其最多工作60天。之后,令牌将过期,然后您必须刷新令牌,并且在没有用户互动的情况下不可能。
documentation表示相同:
即使是长期存取的令牌也会最终到期。在任何时候,您都可以通过将此人发送回您的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的绝佳工具。)
祝你好运!