2011-02-10 15 views
12

ユーザーの現在のプロフィール画像である画像のIDを取得する方法はありますか?FacebookグラフAPI:ユーザープロフィール画像のID

編集:OK、IDを取得するための簡単な方法はないようです!

しかし、すべてのユーザーは属性がtype="profile"の単一のアルバムを持ち、このアルバムの最初の画像は常にプロフィール画像であるため、プロフィール写真のIDをそのように取得することができます。 Facebookでもう少し経験を積んだことが、これが本当に常にそうであることを確認できますか?

+0

これは2016年で、私は同じものを得る方法を見つけることができませんでした。アルバムタイプ= "プロフィール"の場合、必ずしも最初の画像が常にプロフィール画像であるとは限りません。このアルバム内の「非常に古い」プロフィール画像を選択すると、最初の画像は変更されません。私は誰かが助けることができるならば解決策を探しています! –

答えて

5

答えは、例えば、アルバム内の写真(プロフィールの写真がどの異なるFB ID、しかし異なるオブジェクトである)IDを持っているはい

のようです。すべてのオブジェクトのIDは、FBの新しいグラフAPIのコアコンセプトです。ソーシャルグラフの各オブジェクトには、unique IDがあります。

実際、FBグラフAPIを使用したデータリクエストは、ネストされたIDと値のペアで構成されたJSON配列の形式で応答を返します(成功した場合)。ユーザオブジェクトから教育分野

"education": [ 
    { 
     "school": { 
      "id": "126533127390327", 
      "name": "Massachusetts Institute of Technology" 
    }, 
     "year": { 
      "id": "140829239279495", 
      "name": "1992" 
    }, 
     "concentration": [ 
      { 
       "id": "192578844099494", 
       "name": "Computer Science" 
      } 
     ], 
     "type": "College" 
} 

profile photoユーザオブジェクト(すなわち、すべてのFBオブジェクトはフィールド接続を有する)の接続あります。

関連FB Developer Pageの表によると、(ユーザーのプロフィール写真(複数可))を要求グラフAPIの呼び出しは、ユーザーのプロフィール画像ためのURL文字列を返します。

しかし、この同じ呼び出しでユーザーのプロフィール写真が返されないのはなぜですかID

私が思う理由は、URLが戻るということです。

Graph API : User Properties 

ユーザーのプロフィール写真がありませんが、隣接ノードで:

Graph API : User : Connections : picture 

(グラフAPI構造のためのFBのマニュアルを参照してください。 here)。あなたがそのAPI呼び出しを行うと

リクエストヘッダ、特に、リクエストURLを調べます。

http://profile.ak.fbcdn.net/hprofile-ak-snc4/32093_100005743929541_5467982_q.jpg 

アンダースコア(100005743929541)の間の文字列は、ユーザIDである:あなたが行うとき、あなたはこのようなものが表示されます。これは、Graph APIをもう一度呼び出すことで簡単に確認できます。お使いのブラウザのアドレスバーからわずか入力する(あなたはFacebookのにログインしていると仮定した場合):

https://graph.facebook.com/me 

をだから、もう一度、そのJSON文字列の最初の項目は、ユーザーのFB IDです。それで、ユーザープロファイルIDが確かに独自のIDを持っているとすれば、その文字列(ユーザーのFB ID)に隣接する2つの小さい整数の整数ののIDは、です。言い換えれば、上記のリクエストURLの32093_100005743929541_5467982です。

最後に、これに答える最良の方法は、新しいGraph API Explorerを使用することです。

https://graph.facebook.com/[id]/picture

参考:あり http://developers.facebook.com/docs/reference/api/

+1

プロフィール画像からユーザーIDを確実に取得できるようには思われません。私のユーザIDは '/ me':10153540253304706です。私のプロフィール写真のURLから抜粋したID:10152550339904706です。一致しません。 – 10basetom

18

は、次のURLからユーザーのパブリックプロフィールの写真を得ることができますこのタスクを達成するもう一つの簡単な方法です。

  1. https://graph.facebook.com/me/albums?access_token=ですべてのフェイスブックアルバムを取得します。

  2. タイプ == 'profile'のオブジェクトにループしてチェックします。

  3. は、オブジェクトcover_photoタイプ == 'プロフィール' の値を取得します。

cover_photo のこの値は、ユーザのプロファイルPICのIDです。

あなたはhttps://graph.facebook.com/ < cover_photo値でそれを確認することができます> access_tokne =

+11

これはあなたに写真のIDを与えていませんが、 – johnnymire

2

(。私はこれを確認しようとしましたが、私の要求がぶら下がっている)

+2

"このcover_photoの値は、ユーザーのプロフィール写真のIDです。" - それは事実ではありません – johnnymire

+0

私はこれは正解であると思います。簡単なテストでは、このアルバムの表紙が常にプロフィールの写真と同じであることがわかります。 – BlackOverlord

1

あなたはまだこれを必要とする場合、私は知らないが、これは、私はPHPでそれをやった方法です:?

$albumsfb = $facebook->api('/me/albums/?fields=type'); 
$albumsfb = $albumsfb['data']; 
foreach ($albumsfb as $albumfb) { 
    if ($albumfb['type']=='profile'){ 
     $albumprofile = $albumfb['id']; 
     break; 
    }; 
} 
$photoprofilefb = $facebook->api('/'.$albumprofile.'/?fields=cover_photo'); 
$photoprofilefb = $photoprofilefb['cover_photo']; 
$photoprofilefb = $facebook->api('/'.$photoprofilefb); 
$fotoperfilfburl = $photoprofilefb['source']; 

"私"の代わりに、あなたが望むユーザーIDを入れますか?

-1

私は最近、グラフAPIエクスプローラ

から私の友人のプロフィールの写真のいずれかを好きにしようとしたここで私は彼の現在のプロファイルPICのIDまし方法は次のとおりです。あなたはグラフAPIを使用している場合は

fields=friends..fields(albums.fields(photos.fields(id,name,link),name)) 

をエクスプローラでチェックボックスをチェックすると、上記のコード行がtextEntryに生成されていることに気付くかもしれません。制限サイズはあなた次第ですが、JSONオブジェクトをすばやく受け取るために1つだけ保持しました(制限なしで、多くの情報を含むJSONオブジェクトを取得するのに5分かかりました)。(写真内の写真のIDと名前)

友達 友達の中でアルバムのアルバム名や写真以内

は、だからここにあなたが(秩序維持)グラフAPIにチェックする必要があるものです

私は私の友人:)

0
http://graph.facebook.com/<SOCIAL-ID>/picture?type=<small|normal|album|large|square> 

SOCIAL-ID =のFacebookのすべてのプロファイルの写真を好きにPHPスクリプトを作ったが、社会のIDを返しました。

small | normal | album | large | square =画像のサイズ。

関連する問題