我正在使用oauth将facebook用户登录到我的应用程序。我正在使用我的FB帐户和基本权限范围进行测试。 Facebook文档说我应该能够获得具有基本权限的“图片”,但是当我使用API访问它时,我的帐户没有“图片”属性。虽然有名字,姓氏等。
这是因为我的帐户无法公开查看吗?为什么会这样?我绝对有附图。
这是我的fb链接:http://www.facebook.com/josh.nankin
答案 0 :(得分:7)
您可以直接从Facebook返回的基本标准OAuth信息中获取个人资料照片网址,如Josh Nankin所说,但澄清。
您仍然可以使用返回的用户ID来请求照片,例如:
https://graph.facebook.com/914431778578699/picture?type=large
与
相同https://graph.facebook.com/dark.eye.1/picture?type=large
这样只需要一个请求,因为您可以在将照片URL存储到数据库中时对其进行插值。
答案 1 :(得分:5)
https://developers.facebook.com/docs/reference/api/user/:
“图片:用户个人资料图片的网址(仅在您明确指定'fields = picture'param 时才会返回)”
您可能不会忽略以粗体标记的部分......?
答案 2 :(得分:4)
所以,当你点击API上的/ me路径时,仍然不确定为什么图形api不会返回图片属性,但是一旦你拥有来自/ me的用户名,你就可以很容易地得到图片:
答案 3 :(得分:2)
实际上,您无需允许公共访问即可获取个人资料图片,因为您可以获得USER_ID。虽然USER_ID可以轻松导航到个人资料图片。
<?php
$sql = "SELECT id FROM candyshop WHERE candy <= 5 AND sugartype ='hard'";
$count = 0;
$retry = 5;
do {
// Count the rows
if ($result = mysqli_query($con, $sql)) {
$count = mysqli_num_rows($result);
}
// Wait for 10ms
if ($count === 0) {
usleep(10000)
}
} while ($count === 0 && --$retry > 0);
mysqli_close($con);
您可以将变量linkpp中的类型更改为 type = small ,它会返回低分辨率图像。
function checkLoginState() {
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
console.log('Welcome! Fetching your information.... ');
var url = '/me?fields=id,name';
FB.api(url, function(response) {
var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=large';
document.getElementById("id_of_link_tag").href = linkpp;
});
});
}