我正在创建一个网站,使用Facebook帐户登录的用户将在页面上看到他们的照片。我必须在我的网站上放什么代码才能看到登录用户的图片。
如果有人能帮我提供一个教程链接,或者为我指明正确的方向。
我读了很多来自Facebook和堆栈溢出的文档,但我找不到答案,
您可以通过两种方式做到这一点:在服务器端(在您的情况下是PHP)或使用JavaScriptSDK在客户端。
两者都假定您具有所需的访问凭据。你需要注册一个应用程序帐户才能在Facebook开发者网站上获得这些
服务器端
第一步是让您的应用程序参与OAuth身份验证过程。这在Facebook指南中有很好的PHP文档(请参阅服务器端流程部分)。
完成后,您将拥有一个访问令牌,可以使用该令牌调用Graph API。获取用户照片的端点是https://graph.facebook.com/me/photos?access_token=<token>
。在这种情况下,me
始终是登录以向您的应用程序提供令牌的用户。
在PHP中,假设您已将访问令牌存储在$SESSION['token']
中,则可以使用请求照片负载
$url = "https://graph.facebook.com/me/photos?access_token=" . $SESSION['token'];
$photos = json_decode(file_get_contents($url));
$photos
对象将是Facebook文档中描述的Photo
实体的列表。
客户端
您需要在您的网页上设置JavaScript SDK,如本文所述。
客户端的身份验证由JavaScriptSDK处理,再次在身份验证指南中进行了说明。
使用SDK,您可以为相同的照片结构对Graph API进行客户端JavaScript调用:
FB.api('/me/photos', function(response) {
if(!response || response.error) {
// render error
} else {
// render photos
}
});
查看堆栈上的其他问题如何从Facebook导入照片?
我认为现在Facebook已经改变了导入照片的方式,所以我们必须首先获取相册,然后再导入该相册的照片。至少我是这样做的以下是使用PHP 的基本api调用
获取相册:-<?php $user_albums = $facebook->api('/me/albums', $params); ?>
获取相册照片:-<?php $user_album_photos = $facebook->api('/' . $album_id . '/photos', $params); ?>
现在是完整的代码摘要。请在文件中复制此代码并检查是否进行导入照片
<?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>';
}
?>