web-dev-qa-db-ja.com

FacebookのGraph APIのv2.0以降でユーザーのユーザー名を取得する方法

API 1.0では、/meを使用して、応答オブジェクトのusernameプロパティを取得して、ユーザーのユーザー名をかなり簡単に取得していました。

今、私はAPI 2.0でこのエラーを受け取っています:

「(#12)バージョンv2.0以降のユーザー名は非推奨です」

これまでこれを実現するために見つけた唯一の方法は、FQLを使用することでしたが、今では非推奨のようです。

誰もこれを回避する方法を知っていますか?ありがとう!

33
joaopribs

役に立たないというつもりはありませんが、私が知る限り、ユーザー名へのアクセスはAPIから削除されているようです。古い共有ダイアログなど、アプリがユーザー名を使用していた可能性のある場所は、2.0 APIで使用した場合、これを実行できなくなりました。これは、アプリがアプリの範囲外で使用可能な一意の識別子にアクセスできないようにする方法でもあると思います。2.0APIで取得するユーザーIDは、アプリだけに固有のものです。

21
giff

Facebookへのget要求を含む簡単な回避策を見つけました。ユーザー名の代わりに、Facebookはアプリケーションに固有のIDを提供します。

https://www.facebook.com/ [profile_id] にリクエストすると、ユーザーの実際のプロファイルにリダイレクトされることがわかりました。ユーザー名はリダイレクトURLから抽出できます。

例:

> curl -i https://www.facebook.com/710290539
HTTP/1.1 301 Moved Permanently
Location: https://www.facebook.com/colinskow

(注:私はテストモードでアプリの所有者であるため、これは例外になる可能性があります。実稼働環境でこれを確認できる場合は、コメントでお知らせください。)

8
Colin Skow

回避策として、電子メールを一意の識別子として使用できます。電子メールアドレスは、アクセス許可の範囲として「電子メール」を使用して取得できます。

Facebookは、新しいAPIバージョンからユーザー名フィールドを削除しました。ユーザー名を取得することはできません。ただし、Facebookはアプリケーション固有の一意のIDを提供します。複数のアプリ間で同じユーザーを共有する必要がある場合は、新しく導入されたビジネスマッピングAPIを使用できます。これにより、必要なすべてのアプリをグループに追加できます。この場合、IDはグループ内のすべてのアプリ間で一意になります。

Business Mapping APIの詳細については、 https://developers.facebook.com/docs/apps/for-business1 をご覧ください。

5
user2481857