我正在创建一个网站,其中使用Facebook帐户登录的用户将在页面上看到他们的图片。我必须在我的网站上放置什么代码才能看到用户图片中显示的内容。
如果有人可以帮助我找到指导教程的链接或指向正确的方向。
我已经阅读了很多来自Facebook和堆栈溢出的文档,但我找不到答案,
答案 0 :(得分:2)
您可以通过以下两种方式执行此操作:在服务器端(在您的情况下为PHP)或在客户端使用JavaScript SDK。
两者都假设您拥有所需的访问凭据。您需要注册一个应用程序帐户才能在Facebook Developer site
中获取这些帐户第一步是让您的应用程序参与OAuth身份验证过程。这在Facebook guide中的PHP中有详细记载(参见“服务器端流程”部分)。
完成后,您将拥有一个访问令牌,您可以使用该API调用图谱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 docs中描述的Photo
个实体的列表。
您需要在网页上设置JavaScript SDK,如文档here。
客户端的身份验证由JavaScript SDK处理,再次记录在authentication guide。
中使用SDK,您可以针对相同的照片结构对Graph API进行客户端JavaScript调用:
FB.api('/me/photos', function(response) {
if(!response || response.error) {
// render error
} else {
// render photos
}
});
答案 1 :(得分:0)
答案 2 :(得分:0)
我认为现在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>';
}
?>