wake-up-neo.com

Es kann kein langfristiges Zugriffstoken über die Facebook-Grafik-API abgerufen werden

Ich bin neu in der Integration von Facebook in die Websites, an denen ich arbeite, und versuche, einen langfristigen Zugriffstoken zu erhalten, indem ich den Anweisungen hier folge: https://developers.facebook.com/docs/facebook-login/access- Token/ Auch wenn Sie den Graph API Explorer hier verwenden: https://developers.facebook.com/tools/Explorer/ Ich gebe Folgendes ein und fülle es mit meiner AppID und AppSecret sowie dem aktuellen Token auf, das ich erhalte, wenn ich es erhalte drücke Get Access Token ...

GET/oauth/access_token?
grant_type = fb_exchange_token &
client_id = {app-id} & client_secret = {app-secret} & fb_exchange_token = {kurzlebiges Token}

Ich bekomme die Rückgabe

{"Fehler": "Ungültige Antwort"}

Kann jemand genauer erläutern, was ich möglicherweise falsch mache, oder welche Schritte bei der Beschaffung dieses langfristigen Tokens für Sie hilfreich sind?.

Ich habe versucht zu verfolgen, was in diesem Thread passiert. Facebook-Seitenzugriffstoken - Laufen diese ab? ohne Erfolg. Jede Hilfe wäre sehr dankbar.

Vielen Dank für Ihre Zeit und Ihre Hilfe. Prost,

-Ryan

16
StafHat

Sie können den long-lived user token nicht mit dem Graph API Explorer erhalten. Sie müssen eine GET Anfrage stellen an:

https://graph.facebook.com/oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}

Sie können es im Browser überprüfen.

Wenn Sie den page access token benötigen, können Sie ein never ablaufendes Token haben. Überprüfen Sie die akzeptierte Antwort hier: Was sind die Schritte, um ein langlebiges Token für das Posten auf einer Facebook-Fanseite von einem Server zu erhalten

22
Sahil Mittal

Also dachte ich mir, ich würde das noch einmal überdenken und die Dokumentation bereitstellen, die ich geschrieben habe und die hoffentlich jemand anderem dabei helfen wird, dies zu erreichen!

ONE. Anwendung erstellen

Erstellen Sie eine Anwendung, die dem Benutzer der Seite zugeordnet ist, auf die Sie Zugriff haben möchten.

ZWEI. Erhalten Sie die erforderlichen Informationen

Nach dem Erstellen einer App sollten wir zwei wichtige Informationen haben:

App-ID: AAAAA (sollte ca. 15 Zeichen lang sein)

App Secret: BBBBB (sollte ca. 32 Zeichen lang sein)

Gehen Sie dazu zu https://developers.facebook.com/tools/Explorer und wählen Sie oben in der Dropdown-Box die richtige Anwendung aus.

Klicken Sie auf "Get Access Token" und erhalten Sie einen "frischen" Token.

Hier müssen Sie die entsprechenden Berechtigungen für den Zweck Ihrer App auswählen.

CCCCC (sollte ~ 200 Zeichen lang sein)

DREI. Holen Sie sich Long Life Token (2 Monate)

Sie sollten dann über die Informationen verfügen, die zum Ausführen der Abfrage erforderlich sind, um ein langfristiges (2-monatiges) Token zu erhalten:

https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id= {app-id} & client_secret = {app-secret} & fb_exchange_token = {kurzlebiges Token}

Ersetzen Sie {app-id}, {app-secret} und {kurzlebiger Token} durch die drei Informationen, die Sie bisher notiert haben.

Sie sollten eine Anfrage wie die folgende erhalten:

https://graph.facebook.com/oauth/access_token?%20grant_type=fb_exchange_token&%20client_id=AAAAA&%20client_secret=BBBBB&%20fb_exchange_token=CCCCC

Platzieren Sie diese Abfrage in der URL-Leiste eines Internetbrowsers. Sie sollten eine Antwort im folgenden Fenster erhalten:

access_token = DDDDD & expires = 5184000

DDDDD (sollte ~ 200 Zeichen lang sein)

VIER. Test Token (Teil 1)

Wenn Sie den markierten Teil in die Eingabe auf der folgenden Debug-Site eingeben:

https://developers.facebook.com/tools/debug/

Es sollte Ihnen einen Ablauf von ungefähr 2 Monaten geben.

FÜNF. Nicht ablaufendes Seitentoken abrufen

Wenn Sie dieses neue Long-Live-Token zur Kenntnis nehmen, erhalten Sie damit ein Token, das nicht abläuft, es sei denn, die zugehörige Anwendung wurde aus dem Zugriff eines Benutzers entfernt oder gelöscht. Wir verwenden entweder den Seitennamen oder vorzugsweise die Seiten-ID, wenn wir die Anfrage stellen:

Sie können Ihre Facebook-Seiten-ID über Folgendes ermitteln: http://findmyfacebookid.com/ Wir beziehen uns auf Ihre Seiten-ID als EEEEE

https://graph.facebook.com/ {page-id} /? fields = access_token & access_token = {long-live-token}

Sie sollten eine Anfrage wie die folgende erhalten:

https://graph.facebook.com/EEEEE/?fields=access_token&access_token=DDDDD

Dies gibt ungefähr Folgendes zurück: {"access_token": "FFFFF", "id": "131062838468"}

FFFFF (sollte ~ 200 Zeichen lang sein)

SECHS. Test Token (Teil 2)

Nehmen Sie den hervorgehobenen Teil und geben Sie ihn auf der Debug-Seite ein. Sie sollten etwas erhalten, das anzeigt, dass das Token nie abläuft und Sie erfolgreich Ihr Token für nie ablaufende Seiten abgerufen haben.

SIEBEN. Gib mir fünf!

Es tut mir leid für die lange Liste, wie dies erreicht werden kann, aber ich finde es besser, den gesamten Prozess zu beschreiben, anstatt nur einen kleinen Ausschnitt. Lassen Sie mich wissen, wenn Sie dies hilfreich finden oder eine bessere Möglichkeit haben, einen der Schritte auszuführen.

10
StafHat

Facebook PHP SDK hat bereits eine Methode implementiert, um ein langlebiges Token mit einem kurzlebigen Token zu erhalten, nachdem die Anmeldung erfolgreich war, und das kurzlebige Token mit einem einfachen Aufruf erhalten

$result = $facebook->setExtendedAccessToken();

wenn $ result null ist, bedeutet dies, dass Sie das langlebige Zugriffstoken erhalten haben.

1
Hieu Vo

client-Seite

        if (response.status === 'connected') {
            {
                event.preventDefault();
                FB.login(function (response) {
                    if (response.authResponse) {
                        var profileId = response.authResponse.userID;
                        var accessToken = response.authResponse.accessToken;
                        var e = response.authResponse.accessToken;
                        document.getElementById('token').innerHTML = e;
                        var profileName = "";
                        var pagesList = "";
                        var isPage = 0;
                        var type = "fb";
                        $.ajax({
                            url: "WebService1.asmx/getlonToken",
                            type: "POST",
                            dataType: 'json',
                            data: '{accessToken:"' + accessToken + '"}',
                            contentType: "application/json; charset=utf-8",
                            async: true,
                            success: function (response) {
                                accessToken = response.d;
                                document.getElementById('status').innerHTML = accessToken;
                            },
                            error: function (e) {
                                alert('Error' + e);
                            }
                        });



                    }
                }, { scope: 'user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_photos,friends_photos,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,email,manage_pages,publish_stream,read_stream,read_page_mailboxes,read_insights, read_mailbox' });

            }

Serverseite

   [WebMethod]
    public string getlonToken(string accessToken)
    {
        var fb = new FacebookClient(accessToken);
        dynamic result = fb.Get("oauth/access_token", new
            {
                client_id = 123,
                client_secret = "123fff45",
                grant_type = "fb_exchange_token",
                fb_exchange_token = accessToken,
                scope = "user_about_me,friends_about_me,user_activities,friends_activities,user_birthday,friends_birthday,user_checkins,friends_checkins,user_education_history,friends_education_history,user_events,friends_events,user_groups,friends_groups,user_hometown,friends_hometown,user_interests,friends_interests,user_likes,friends_likes,user_location,friends_location,user_notes,friends_notes,user_photos,friends_photos,user_relationships,friends_relationships,user_relationship_details,friends_relationship_details,user_religion_politics,friends_religion_politics,user_status,friends_status,user_videos,friends_videos,user_website,friends_website,email,manage_pages,publish_stream,read_stream,read_page_mailboxes,read_insights,ads_management"
            });

        fb.AccessToken = (string)result["access_token"];
        return fb.AccessToken;
    }
}
0
nouman arshad