const void
разрешен просто потому, что нет смысла заставить компилятор выгнать это одно исключение из общего правила, и ему не вредно оставить его.
Там есть некоторое обсуждение выше, что const void *
не очень полезно:
Насколько полезен const void *? Я вижу, как может быть void * const, но не первый. -Spidey
blockquote>На самом деле
const void *
иногда является существенным. Он заявляет, что указываемая вещь читается только в отличие отvoid * const
, которая только объявляет, что сам указатель является постоянным, но не тем, на что он указывает.Из моего опыт, указатель на константу с использованием
const void *
является более полезным из двух форм. Конечно, существует такжеconst void * const
, что означает, что и указатель, и то, что он указывает, являются постоянными.
void *
обычно используется как способ передачи неспецифических указателей (например, с помощьюmemcpy ()
). Если вы хотите передатьconst char *
в такую функцию, вы не сможете использоватьvoid *
или потеряете тот факт, что предмет, на который он указывает, является постоянным и не может быть изменен , Текущие компиляторы C ++ откажутся от компиляции, так как это должно было бы неявно отброситьconst
и по праву, так как эти данные могут находиться в постоянной памяти и, возможно, вызывать исключение, если что-либо пытается написать это.Вот почему второй аргумент
memcpy ()
-const void *
, а не простоvoid *
.
вам не нужно вытягивать атрибут «картинка». есть намного более удобный способ, единственное, что вам нужно - это userid, см. пример ниже;
https://graph.facebook.com/user_id/picture?type=large
стр. s. тип определяет размер, который вы хотите
plz, помните, что используя токен с базовыми разрешениями, / me / friends вернут список друзей только с атрибутами id + name
У меня такая же проблема, но я попытался решить эту проблему. он возвращает большое изображение. Это не идеальное решение, но вы можете попробовать это.
https://graph.facebook.com/v2.0/OBJECT_ID/picture?access_token=XXXXX
Вы можете указать ширину и; высота в вашем запросе к графику Facebook api: http://graph.facebook.com/user_id/picture?width=500&heigth=500
Вариант в стиле JS. Просто установите огромную ширину изображения, и вы получите самый большой вариант.
FB.api(
'/' + userId,
{fields: 'picture.width(2048)'},
function (response) {
if (response && !response.error) {
console.log(response.picture.data.url);
}
}
);
попытайтесь изменить размер изображения, изменив размер пикселя с url в каждом объекте json следующим образом:
например, я изменяю s480x480 как s720x720
Я исследовал Graph API Explorer широко и, наконец, нашел full_picture
https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture
P.S. Я заметил, что full_picture не всегда будет предоставлять полноразмерный образ, который я хочу. [attachments] делает
https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments
Измените массив полей id,name,picture
на id,name,picture.type(large)
https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>
Результат:
{
"id": "130716224073524",
"name": "Julian Mann",
"picture": {
"data": {
"is_silhouette": false,
"url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
}
}
}
Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
– Honza
14 October 2017 в 21:33
Вы можете использовать full_picture вместо клавиши изображения, чтобы получить изображение полного размера.
Лучший способ получить всех друзей (которые тоже используют приложение тоже, конечно) с правильными размерами изображений - использовать расширение field , либо с одним из тегов размера (квадратный, нормальный, большой):
/me/friends?fields=picture.type(large)
(изменить: это больше не работает)
... или вы можете указать ширину / высоту:
me/friends?fields=picture.width(100).height(100)
Btw, вы также можете записать его так:
me?fields=friends{picture.type(large)}
Хм ... Я думаю, что нашел решение.
На самом деле, in может просто запросить
https://graph.facebook.com/me/friends?fields=id,name
Согласно http: // разработчикам .facebook.com / docs / reference / api / (раздел «Картинки»), URL-адрес фотографий профиля может быть создан с идентификатором пользователя
Например, если идентификатор пользователя находится в $ id :
"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"
Но это не окончательный URL-адрес изображения, поэтому, если у кого-то есть лучшее решение, я был бы рад узнать:)
Из v2.7
, /<picture-id>?fields=images
предоставит вам список с разным размером изображений, первый элемент будет полноразмерным изображением.
Я не знаю ни одного решения для нескольких изображений сразу.
Я думаю, что теперь единственный способ получить большие фотографии друзей - использовать FQL. Во-первых, вам нужно получить список друзей:
https://graph.facebook.com/me/friends
Затем проанализируйте этот список и Извлеките всех друзей ids
. Если у вас есть это, просто выполните следующий запрос FQL:
SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200
200
здесь просто примерный размер, вы можете ввести что угодно. Вы должны получить следующий ответ:
{
"data": [
{
"id": ...,
"url": "https://fbcdn-profile-a.akamaihd.net/..."
},
{
"id": ...,
"url": "https://fbcdn-profile-a.akamaihd.net/..."
}
]
}
. Каждый URL-адрес является ссылкой на образ 200x200px.
Вы можете установить размер изображения в пикселях, например:
https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)
Аналогичным образом можно использовать параметр type
{user-id}/?fields=name,picture.type(large)
From документация
type enum {small, normal, album, large, square}
Пользователи rest-fb (квадратное изображение, большее разрешение): Connection myFriends = fbClient.fetchConnection ("me / friends", User.class, Parameter.with ("поля", "public_profile, email, first_name, last_name, пола, picture.width (100) .height (100) "));
Вы также можете попробовать получить изображение, если хотите, исходя из высоты или ширины
https://graph.facebook.com/user_id/picture?height=
ИЛИ
https://graph.facebook.com/user_id/picture?width=
Значения по умолчанию в пикселях вам просто нужно указать значение int
Как описано в этой ошибке на Facebook, вы также можете запросить конкретные размеры изображений теперь с помощью нового синтаксиса API [ field ].
Например:
https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)