「古い」Facebook Graph APIには、人間が読み取れるプロファイルURLを作成するために使用できる「ユーザー名」フィールドがありました。たとえば、私のユーザー名は "sebastian.trug"で、FacebookのプロファイルURL http://www.facebook.com/sebastian.trug になります。
Graph API 2.0で Facebookは「/ me」から取得したユーザーデータから「username」フィールドを削除しました .
2.0 APIを介してこのデータを取得する方法はありますか、または「ユーザー名」は非推奨フィールドとして扱われていますか?
ユーザー名はFacebook経由でメールを送信する1つの方法であるため、Facebookはユーザー名を削除しました。
たとえば、URL http://www.facebook.com/sebastian.trug
対応するFacebookメールは[email protected]
電子メールで送信された場合、messages
に直接受信されます(message
設定がpublic
に設定されている場合)、そうでない場合はother
受信ボックスに受信されます。
Userオブジェクトのusername
フィールドは削除されており、Graph API v2.0には存在しません。 APIのv2.0には、ユーザーのFBユーザー名を取得する方法はありません。
ソース: https://developers.facebook.com/docs/apps/changelog#v2_0_graph_api
「/ me/usernameは使用できなくなりました。」
@Simon Cross-廃止されることが文書化されています、はい。それは問題ではありません。問題はどうやってそれを手に入れるかということです。さらにFacebookはなぜそんなにひどい選択をしてユーザー名を削除したのだろうかと思います。サービスでアカウントを作成するためにユーザー名に依存する何百ものアプリケーションが壊れます。
@ user3596238-2015年4月末まで予定されているV.1 APIに固執することができます。これは最善の解決策ではありませんが、それでもFacebookは関係ありません。 https://developers.facebook.com/docs/apps/changelog
解決策:実際のFacebookログインの他にユーザーにユーザー名を尋ねますか? -私の意見では、それはFacebookのログインをとにかく完全に無意味にします。
2.0 SDKはusername
フィールドを提供しなくなりましたが、ユーザーID番号(とにかくグラフにアクセスするために使用する可能性が高い)があれば簡単に削除できます。
Url facebook.com/<user id>
はfacebook.com/<username>
にリダイレクトされ、その後、好きなように抽出できます。
私のアプローチは、ユーザープロファイルでnokogiriを使用してユーザー名を破棄することです。このような(Rubyで):
html = RestClient.get("http://facebook.com/123123xxx)
doc = Nokogiri::HTML(html)
username = doc.css('head meta')[1].attributes["content"].value
方法の1つは、cURLを使用してfacebook.com/{userid}にアクセスし、リダイレクトに従うことです。
ページがfacebook.com/{username}に再リダイレクトされます