Facebook oauth, без изображения с базовыми разрешениями
Я использую oauth для входа пользователей facebook в мое приложение. Я тестирую свою учетную запись FB и область основных разрешений. Facebook docs говорят, что я должен получить "изображение" с базовыми разрешениями, но моя учетная запись не имеет свойства "изображение", когда я обращаюсь к нему с API. Однако имя, фамилия и т.д.
Это потому, что моя учетная запись не является общедоступной? Почему это может произойти? У меня определенно есть изображение профиля.
Здесь моя ссылка fb: http://www.facebook.com/josh.nankin
Ответы
Ответ 1
Лучший способ - сохранить основные разрешения и запустить запрос для изображения на отдельном шаге. Задайте график api следующим образом:
https://graph.facebook.com/[fb_user_id]?fields=picture.type(small)
Изображение большего размера:
https://graph.facebook.com/[fb_user_id]?fields=picture.type(large)
Вы получите ответ JSON вроде:
{
"id": "100001XXXXXXXXX",
"picture": {
"data": {
"url": "http://profile.ak.fbcdn.net/hprofile-XXXX/41524_1000018XXX51507_XXXX3_q.jpg",
"is_silhouette": false
}
}
}
Ответ 2
Вы можете получить URL-адрес профиля напрямую из базовой информации OAuth, возвращенной из facebook, как отметил Джош Нанкин, но с уточнением.
Вы все равно можете использовать идентификатор пользователя, который возвращается для запроса фотографии, например:
https://graph.facebook.com/914431778578699/picture?type=large
совпадает с
https://graph.facebook.com/dark.eye.1/picture?type=large
Таким образом, должен быть выполнен только один запрос, поскольку вы можете интерполировать URL-адрес фотографии, когда вы храните его в БД.
Ответ 3
Итак, все еще не уверен, почему граф api не возвращает свойство изображения, когда вы нажимаете путь /me в API, но как только у вас есть имя пользователя из /me, вы можете легко получить изображение:
https://graph.facebook.com/USERNAME/picture
Ответ 4
https://developers.facebook.com/docs/reference/api/user/:
": URL-адрес профиля пользователя pic (возвращается только, если вы явно указываете параметр" fields = picture ")"
Вы, вероятно, не заметили часть, выделенную жирным шрифтом...?
Ответ 5
На самом деле вам не нужно разрешать публичный доступ, чтобы получить изображение профиля, так как вы можете получить USER_ID. Хотя USER_ID вы можете легко перейти к изображению профиля.
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;
});
});
}
Вы можете изменить тип переменной linkpp на type = small, который возвращает изображение с низким разрешением.
var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=small';