Facebook Graph API v1.0からv2.0へのアップグレードにより、Facebookは「アプリスコープのユーザーID」を使用しているため、アプリ内で「元の」ユーザーIDが表示されなくなりました。
私は常に「 https://graph.facebook.com/ {postId}/comments 」のようなリアルタイム更新とグラフAPI呼び出しを使用して、アプリがあったFacebookページでのユーザーアクティビティを分析しました。ただし、これらのデータには元のユーザーIDが含まれているため、登録済みのユーザーにアクティビティを一致させることができなくなりました!
では、アプリスコープのユーザーIDから元のFacebookユーザーIDを取得する方法はありますか?またはその逆ですか?
編集:
ここで言及したAPIメソッドを使用して、すべてのユーザーのアプリスコープIDを取得することになりました: https://stackoverflow.com/a/29154912/3432305 に加えて、データベースに保存しました古いID。その後、RTUが到着したときはいつでも、「古いユーザー」に対して、どのユーザーがこのアプリスコープのIDを持っているかを確認し、更新を処理します。少なくともFacebookはコメントに記載されているバグを修正できました( アプリスコープのユーザーIDからFacebookユーザーIDを取得 )API v1.0が廃止される数日前に、私のアプリの新規ユーザー向けに、それは魅力のように機能します。これまでのところ...
アプリスコープのユーザーIDに基づいて実際のユーザーIDを取得する(単純/明白な)可能性はありません。
ヨハネスNの会話から.
元のユーザーIDを使用して、アプリスコープのID(所有しているアプリ用)を取得できますか。それも助けになります。
元のユーザーIDからアプリスコープのIDを取得するには、次の方法で簡単に行えます。
https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USER_ID&access_token=ACCESS_TOKEN
Yoは、fieldsパラメーターを使用してidのみを返すことができます。
複数のIDを照会できるため、idではなくidsの利点:
* wwwは、文字数を最小限に抑えるために削除できます。
ユーザー名からアプリスコープのIDを取得することも簡単にできます。
https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USERNAME&access_token=ACCESS_TOKEN
スコープからリアルに戻ることはできません。あなたの最善の策は、それらすべてをスコープに変換することです。それは非常に簡単です:
https://graph.facebook.com/?ids=REAL_ID&access_token=APP_ID|APP_SECRET
これを行う簡単なRubyコードを次に示します。
require 'open-uri'
require 'json'
json = JSON.load(open("https://graph.facebook.com/?ids=#{real_id}&access_token=#{FACEBOOK_APP_ID}|#{FACEBOOK_APP_SECRET}"))
scoped_id = /app_scoped_user_id\/(\d+)\//.match(json[real_id.to_s]['link'])[1]