web-dev-qa-db-de.com

Holen Sie sich die Facebook-Benutzer-ID von der Benutzer-ID im Anwendungsbereich

Mit dem Upgrade von Facebook Graph API v1.0 auf v2.0 verwendet Facebook "Anwendungsspezifische Benutzer-IDs", sodass die "ursprüngliche" Benutzer-ID in meinen Apps nicht mehr angezeigt wird.

Ich habe immer die Echtzeit-Updates und Diagramm-API-Aufrufe wie " https://graph.facebook.com/ {postId}/comments " verwendet, um die Benutzeraktivität auf der Facebook-Seite zu analysieren, auf der sich die App befand. Da diese Daten jedoch die ursprüngliche Benutzer-ID enthalten, kann ich die Aktivitäten nicht mehr meinen registrierten Benutzern zuordnen!

Gibt es eine Möglichkeit, die ursprüngliche Facebook-Benutzer-ID von einer Benutzer-ID mit Anwendungsbereich abzurufen? Oder umgekehrt?

BEARBEITEN:

Mit der hier genannten API-Methode habe ich die IDs im Anwendungsbereich für alle meine Benutzer abgerufen: https://stackoverflow.com/a/29154912/3432305 und sie zusätzlich zu der in meiner Datenbank gespeichert alte ID. Immer wenn eine RTU ankam, überprüfte ich für "alte Benutzer", welcher Benutzer diese App-ID hat, und verarbeitete das Update. Zumindest Facebook hat es geschafft, den in den Kommentaren erwähnten Fehler zu beheben ( Facebook-Benutzer-ID von Benutzer-ID mit Anwendungsbereich abrufen ), einige Tage bevor die API v1.0 veraltet war, also für neue Benutzer meiner Apps , es wirkt wie ein Zauber. Bisher...

42
kolli

es gibt keine (einfache/offensichtliche) Möglichkeit, eine echte Benutzer-ID basierend auf einer Benutzer-ID mit Anwendungsbereich zu erhalten.

10
Johannes N.

Aus Ihrem Gespräch zwischen Johannes N.

Kann ich die App-IDs (für Apps, die ich besitze) über die ursprüngliche Benutzer-ID abrufen? das würde auch helfen.

Das Abrufen von App-Scoped-IDs von der ursprünglichen Benutzer-ID ist ganz einfach über Folgendes möglich:

https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USER_ID&access_token=ACCESS_TOKEN

enter image description here

Sie können fields parameter verwenden, um nur id zurückzugeben:

https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USER_ID&fields=id&access_token=ACCESS_TOKEN

enter image description here

Der Vorteil von IDs anstelle von IDs , da Sie mehrere IDs abfragen können:

enter image description here * www kann entfernt werden, um die Anzahl der Zeichen zu minimieren.

Das Abrufen von IDs mit Anwendungsbereich vom Benutzernamen ist ebenfalls einfach:

https://graph.facebook.com/v2.0/?ids=http://www.facebook.com/USERNAME&access_token=ACCESS_TOKEN

enter image description here

27
林果皞

Sie können nicht von Scoped zurück zu Real gehen. Am besten konvertieren Sie alle in einen Bereich. Ganz einfach:

https://graph.facebook.com/?ids=REAL_ID&access_token=APP_ID|APP_SECRET

Hier ist ein einfacher Ruby Code, der dies tut:

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]
6
Sam Soffes