Я хотел бы знать, есть ли простой способ получить фотографию обложки от пользователя в моем приложении через facebook php sdk.
Спасибо заранее.
Я хотел бы знать, есть ли простой способ получить фотографию обложки от пользователя в моем приложении через facebook php sdk.
Спасибо заранее.
Facebook, похоже, недавно добавил поле Обложка в пользовательский объект
https://graph.facebook.com/facebookuserid?fields=cover предоставит вам обложку для пользователя pic Details
Facebook Doc Link: http://developers.facebook.com/docs/reference/api/user/
Я думаю, что проще всего использовать график api:
http://graph.facebook.com/{user_id or page_id}?fields=cover
и проанализируйте возвращенный JSON.
{
"cover": {
"id": "XXX",
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-ash4/311205_989690200741_1231438675_n.jpg",
"offset_y": 66
},
"id": "XXXXXX"
}
Facebook имеет действительно плохую и устаревшую документацию... На данный момент нет правильного способа сделать это с помощью Graph API, но с FQL это возможно.
SELECT pic_cover FROM user WHERE uid='yourUserId'
Поле pic_cover не документировано, но доступно. Ответ должен выглядеть следующим образом:
[
{
"pic_cover": {
"cover_id": someId,
"source": "someUrl",
"offset_y": someOffset
}
}
]
В последних версиях Graph API (2.4 на момент написания) текущее значение поддерживает поле "изображение", которое возвращает изображение профиля пользователя. Это стоит проверить.
/<user-id>?fields=id,name,picture
Я думаю, что лучше спросить тип альбома, затем имя.
$albums = $facebook->api("/me/albums");
$album_id = "";
foreach($albums["data"] as $item){
//echo $item["id"]." - ".$item["name"]." - ".$item["type"]." - ".$item["cover_photo"]."<br/>";
if($item["type"] == "profile"){
$album_id = $item["id"];
$profile_picture_id = $item["cover_photo"];
break;
}
}
Похоже, на данном этапе, ожидая обновленной документации из facebook, ваш метод является единственным способом "уверенного огня" для получения обложки временной шкалы пользователей.
Если вы обнаружите, что этот метод является медленным или неэффективным, возможно, вы можете попробовать запустить его как задание cron и иметь минимальную задержку обновления. Например. запускайте cron два раза в день (может быть, даже больше), возможно, обрабатывайте два или три пользователя одновременно, а cron работает каждые 2 минуты...
Не решение для одного; больше предложений.
Я использую: http://graph.facebook.com/ {user_id или page_id}? fields = cover
Возврат в браузере:
{
"cover": {
"id": "XXX",
"source": "https://fbcdn-sphotos-a-a.akamaihd.net/hphotos-ak-ash4/311205_989690200741_1231438675_n.jpg",
"offset_y": 66
},
"id": "XXXXXX"
}
Как я могу получить поле 'source' для var-var php?
Sr, я не могу ответить, поэтому я пишу здесь.: (
он пытается автоматически восстановить изображение с помощью php
$json = file_get_contents("https://graph.facebook.com/PROFILE_ID?fields=cover");
$obj = json_decode($json);
echo $obj->cover ->source;
Я использую имя пользователя вместо id, и оно работает:
http://graph.facebook.com/{username}?fields=cover
Разберите JSON соответственно.
Я использовал ссылку https://graph.facebook.com/facebookuserid?fields=cover, но это не сработало. Когда я просматриваю документацию по SDK в Facebook, я вижу ответ, который работает. Надеюсь, это будет полезно для вас.
[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@?fields=cover", [user objectForKey:@"id"]]
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
NSLog(@"%@",[[result objectForKey:@"cover"]objectForKey:@"source"]);
/* handle the result */
}];
Результат - это тип словаря. Вы можете увидеть ссылку на фотографию обложки для пользователя под тегом "обложка" и ее "исходным" тегом.
Вот как я извлек свой обложки с помощью Jackson и Graph API.
GraphRequest request = GraphRequest.newMeRequest(
AccessToken.getCurrentAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
ObjectMapper mapper = new ObjectMapper();
try {
JsonNode actualObj = mapper.readTree(String.valueOf(object));
JsonNode cover = actualObj.get("cover");
Map<String,String> myMap = mapper.readValue(cover.toString(), HashMap.class);
Log.e("Cover link", myMap.get("source"));
coverpic = myMap.get("source");
} catch (IOException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "cover");
request.setParameters(parameters);
request.executeAsync();
function getCover() {
FB.api('/me?fields=cover', function(response) {
document.getElementById('cover').innerHTML =
"<img src='" + response.cover['source'] + "' alt='' />"
});
}
Здесь ссылка на выборку facebook cover pic..
http://www.77-thoughts.com/fetch-facebook-cover-pic-using-facebook-graph-api/
Вы можете демонстрацию здесь.
http://77-thoughts.com/demo/fetch_facebook_cover_picture_graph_api_demo.html