如何使用php将照片从facebook导入网站?
我正在创建一个网站,使用Facebook帐户登录的用户将在该页面上看到他们的图片。我必须在我的网站中输入什么代码才能看到登录用户的图片 如果有人能帮我链接到一个教程或者给我指出正确的方向如何使用php将照片从facebook导入网站?,php,facebook,Php,Facebook,我正在创建一个网站,使用Facebook帐户登录的用户将在该页面上看到他们的图片。我必须在我的网站中输入什么代码才能看到登录用户的图片 如果有人能帮我链接到一个教程或者给我指出正确的方向 我已经从Facebook和on stack overflow上阅读了很多文档,但我找不到答案,检查stack上的另一个问题您可以通过两种方式完成:在服务器端(在您的情况下使用PHP)或在客户端使用JavaScript SDK 两者都假定您具有所需的访问凭据。您需要注册一个应用程序帐户才能在 服务器端 第一步是让
我已经从Facebook和on stack overflow上阅读了很多文档,但我找不到答案,检查stack上的另一个问题您可以通过两种方式完成:在服务器端(在您的情况下使用PHP)或在客户端使用JavaScript SDK 两者都假定您具有所需的访问凭据。您需要注册一个应用程序帐户才能在 服务器端 第一步是让应用程序参与OAuth身份验证过程。这在中有很好的PHP文档(请参阅服务器端流程部分) 完成后,您将拥有一个访问令牌,可以使用该令牌调用Graph API。获取用户照片的端点是
https://graph.facebook.com/me/photos?access_token=
。在这种情况下,me
始终是登录以向应用程序提供令牌的用户
在PHP中,假设您已将访问令牌存储在$SESSION['token']
中,您可以通过以下方式请求照片负载:
$url = "https://graph.facebook.com/me/photos?access_token=" . $SESSION['token'];
$photos = json_decode(file_get_contents($url));
$photos
对象将是中描述的Photo
实体的列表
客户端
您需要在您的web页面上设置JavaScript SDK,如文档所示
客户端的身份验证由JavaScript SDK处理,同样记录在中
使用SDK,您可以对相同照片结构的Graph API进行客户端JavaScript调用:
FB.api('/me/photos', function(response) {
if(!response || response.error) {
// render error
} else {
// render photos
}
});
我认为现在Facebook已经改变了导入照片的方式,因此我们必须首先获取相册,而不是导入相册的照片。至少我是这样做的。:)下面是使用PHP的基本api调用 获取相册:-
获取相册照片:-
下面是完整的代码摘要。在文件中复制此代码并检查是否导入照片
<?php
include 'facebook/facebook.php';
$config = array();
$config['appId'] = YOUR_APP_ID;
$config['secret'] = YOUR_APP_SECRET;
$config['fileUpload'] = false; // optional
$facebook = new Facebook($config);
$user_id = $facebook->getUser();
$access_token = $facebook->getAccessToken();
?>
<?php
if ($user_id && $access_token) {
// We have a user ID, so probably a logged in user.
// If not, we'll get an exception, which we handle below.
try {
$params = array(
'method' => 'get',
'access_token' => $access_token
);
if (isset($_GET['aid']) && $_GET['aid'] != '') {
$aid = $_GET['aid'];
$user_album_photos = $facebook->api('/' . $aid . '/photos', $params);
//echo "Photos<br/>";
?>
<?php foreach ($user_album_photos['data'] as $key => $value) {
?>
<div class="album">
<div class="frame photo_frame">
<div class="edit-photo-nohover" style="display:block">
<div><input type="checkbox" id="fbimport_id<?php echo $value['id']; ?>" value="<?= $value['id'] . ',' . $value['images']['0']['source'] . ',' . $value['name'] ?>" name="fbimport[]" > <span>Import this Memory</span></div>
</div>
<table class="test">
<tr><td>
<a href="javascript:void(0)"><img src="<?= $value['images']['0']['source'] ?>" height="100" width="100" /></a>
</td>
</tr>
</table>
<h3 id='bottomcaption'><?php echo $value['name']; ?></h3>
</div><br/>
</div>
<?php }
?>
<?php
} else {
$user_albums = $facebook->api('/me/albums', $params);
echo '<h3 class="page-title">Select Your Facebook Album</h3><br/><br/>';
foreach ($user_albums['data'] as $key => $value) {
/* load album if not blank */
if (isset($value['count']) && $value['count'] != '' && $value['count'] != NULL && $value['count'] > 0) {
/* check if album has a cover photo. if not than load a default image */
if (isset($value['cover_photo']) && $value['cover_photo'] != '' && $value['cover_photo'] != NULL) {
$user_album_cover = $facebook->api('/' . $value['cover_photo'], $params);
$album_thumbnail = $user_album_cover['images']['0']['source'];
} else {
$album_thumbnail = 'default_thumb.gif';
}
/* check if album has cover photo end */
?>
<div class="album">
<div class="frame photo_frame">
<table class="test">
<tr><td>
<a href="?aid=<?= $value['id'] ?>" ><img src="<?= $album_thumbnail ?>" height="100" width="100" /></a>
</td>
</tr>
</table>
<h3 id='bottomcaption'><?php echo $value['name']; ?></h3>
</div><br/>
</div>
<?php
}//if(isset($value['count']) && $value['count'] != '' && $value['count'] != NULL && $value['count']>0)
/* load album if not blank end */
}
}
} catch (FacebookApiException $e) {
// If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
error_log($e->getType());
error_log($e->getMessage());
}
} else {
// No user, print a link for the user to login
$login_url = $facebook->getLoginUrl();
echo 'Please <a href="' . $login_url . '">login.</a>';
}
?>
感谢您以非常易懂和清晰的方式回答