0

このFacebookサービスを使用してプロフィール写真を返しています。

<img src="http://graph.facebook.com/username/picture">

fbユーザーがプロフィール写真を設定しなかった場合、サービスはこのFacebookの匿名の人物画像にリダイレクトしますhttp://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif。それらを提示することは避けたいと思います。

javascriptを使用して、返された画像がであるかどうかを検出する方法はありますかhttp://static.ak.fbcdn.net/rsrc.php/v2/yo/r/UlIqmHJn-SK.gif。そのアドレスはCDNからのものなので、ファイルサイズが390B未満で、mime-typeがimage/gifであることを確認できるのではないかと思います。

編集:残念ながら、最新のブラウザー(HTML5とキャンバス)のみを含むソリューションは、ie7に戻る必要があるため、機能しない可能性があります。

4

1 に答える 1

1

はい、あります。AJAXを使用してリクエストを行い、MIMEタイプを自分で解析するだけです。実際、Facebookには次のヘッダーが含まれています。

Access-Control-Allow-Origin:*

これにより、 CORS (Cross Origin Resource Sharing)が承認され、現在ほとんどのブラウザーでサポートされています。

古いブラウザを絶対にサポートする必要がある場合は、OpenGraphのドキュメントを参照してください。

https://developers.facebook.com/docs/reference/api/using-pictures/

画像を直接フェッチする代わりに、JSONPを使用してメタデータをフェッチすることができます。これはIE7で機能するはずです:

関数checkPictureUrl(userName、cb){
  $ .ajax({
    url:'http://graph.facebook.com/' + userName +'/picture?redirect=false'、
    dataType:'jsonp'、
    成功:関数(json){
      //ユーザーはデフォルトのプロフィール写真しか持っていません
      if(json.data.is_silhouette)
        cb(null);を返します。
      そうしないと
        cb(null、json.data.url);を返します。
    }、
    エラー:関数(エラー){
      cb(err);
    }
  });
}
于 2012-12-19T21:11:37.450 に答える