Подтвердить что ты не робот

Facebook oauth, без изображения с базовыми разрешениями

Я использую oauth для входа пользователей facebook в мое приложение. Я тестирую свою учетную запись FB и область основных разрешений. Facebook docs говорят, что я должен получить "изображение" с базовыми разрешениями, но моя учетная запись не имеет свойства "изображение", когда я обращаюсь к нему с API. Однако имя, фамилия и т.д.

Это потому, что моя учетная запись не является общедоступной? Почему это может произойти? У меня определенно есть изображение профиля.

Здесь моя ссылка fb: http://www.facebook.com/josh.nankin

4b9b3361

Ответ 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';