[facebook] グラフAPIからの「本物の」プロフィール画像URLの取得



Question

FacebookのグラフAPIは、私が使用しているユーザーのプロフィール画像を取得できることを教えてくれます

http://graph.facebook.com/517267866/picture?type=large

うまく動作します。 ただし、上記のURLをブラウザに入力すると、画像の実際のアドレスは次のようになります。

http://profile.ak.fbcdn.net/profile-ak-snc1/v227/560/83/n517267866_1928.jpg

プログラムで最初のURLを使用して2番目のURLを取得するにはどうすればよいですか?




$url = 'http://graph.facebook.com/100000771470028/picture?type=large';
$rray=get_headers($url);
$hd = $rray[4];
echo(substr($hd,strpos($hd,'http')));

これはあなたが尋ねたURLを返すでしょうし、オリジナルのURLから動的にURLを呼び出すので、FacebookによるURLの変更の問題は重要ではありません。




ImageView user_picture;
userpicture=(ImageView)findViewById(R.id.userpicture);
URL img_value = null;
img_value = new URL("http://graph.facebook.com/"+id+"/picture?type=large");
Bitmap mIcon1 = BitmapFactory.decodeStream(img_value.openConnection().getInputStream());
userpicture.setImageBitmap(mIcon1);

IDはあなたのプロフィールIDです。




アンドロイド用:

最新のFacebook SDKによると、

まず、 GraphRequest APIを呼び出して、 API URL of current Profile Picture提供するすべてのユーザーの詳細を取得する必要がありAPI

Bundle params = new Bundle();
params.putString("fields", "id,email,gender,cover,picture.type(large)");
new GraphRequest(token, "me", params, HttpMethod.GET,
        new GraphRequest.Callback() {
            @Override
            public void onCompleted(GraphResponse response) {
                if (response != null) {
                    try {
                        JSONObject data = response.getJSONObject();
                        if (data.has("picture")) {
                            String profilePicUrl = data.getJSONObject("picture").getJSONObject("data").getString("url");
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
}).executeAsync();



iOSでプロフィール写真を探している他の人のために:

私はちょうどユーザーのFacebookの画像を取得するためにこれを行いました:

NSString *profilePicURL = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", fbUserID];

ここで「fbUserID」はFacebookのユーザーのプロフィールIDです。

このようにして、私はいつもprofilePicURLのurlを呼び出してイメージを取得できますが、私はいつもそれを得るだけで問題はありません。 既にユーザーIDを持っている場合は、APIリクエストは必要ありません。facebook.com/の後にURLにIDを記載してください。

iOSでfbUserIDが必要な人を探している人には、

if (FBSession.activeSession.isOpen) {
    [[FBRequest requestForMe] startWithCompletionHandler:
     ^(FBRequestConnection *connection,
       NSDictionary<FBGraphUser> *user,
       NSError *error) {
         if (!error) {
             self.userName = user.name;
             self.fbUserID = user.id;
         }
     }];
}

それが機能するには、アクティブなFBSessionが必要になります(Facebookのドキュメントと "Scrumptious"の例を参照)。







Related