我正在开发一个应用程序,以包含在我的页面标签中。在这个应用程序中,用户将使用您的网络摄像头拍照,图片将发送到我的粉丝页面中的特定相册。
我在这里找到了一个脚本:他工作得非常好,但我有一个问题,脚本使用用户access_token上传图片,没有必要请求所有用户上传图片的权限,因为脚本使用我的管理员用户发送到页面。
最大的问题是:用户访问令牌在2小时后过期,或者当我的管理员用户未登录时,权限offline_access已停止,我不知道我的脚本将如何工作。
我需要所有用户都可以使用系统上传照片,任何人都知道我的工作方式吗?
以下是PHP中的脚本:
`
require_once 'library/facebook.php';
$facebook = new Facebook(array(
'appId' => '<appid>',
'secret' => '<appsecret>',
'fileUpload' => true
));
$access_token = 'access_token';
$params = array('access_token' => $access_token);
$fanpage = 'page_id';
$album_id ='album_id';
$accounts = $facebook->api('/ADMIN_ACCOUNT/accounts', 'GET', $params);
foreach($accounts['data'] as $account) {
if( $account['id'] == $fanpage || $account['name'] == $fanpage ){
$fanpage_token = $account['access_token'];
}
}
$valid_files = array('image/jpeg', 'image/png', 'image/gif');
$img = realpath("image_path");
$args = array(
'message' => 'message to write in legend',
'image' => '@' . $img,
'aid' => $album_id,
'no_story' => 1,
'access_token' => $fanpage_token
);
$photo = $facebook->api($album_id . '/photos', 'post', $args);
if( is_array( $photo ) && !empty( $photo['id'] ) ){
echo '<p><a target="_blank" href="http://www.facebook.com/photo.php?fbid='.$photo['id'].'">Click here to watch this photo on Facebook.</a></p>';
}`
答案 0 :(得分:0)
您需要通过点击端点来请求长期访问令牌:
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
查看以下文档中的场景4: http://developers.facebook.com/roadmap/offline-access-removal/
答案 1 :(得分:0)
如果您使用该脚本发布到粉丝页面的相册,那么您应该获得一个页面访问令牌 - 它们不会过期。
详细信息请参见此处:https://developers.facebook.com/docs/authentication/pages/