FB.getLoginStatus nicht feuert callback-Funktion
Ich habe ein schwieriges problem. Schwierig bedeutet, dass ich durchsuchte das Netz und StackOverflow sowie die ganze FBJS-SDK-Dokumentation und noch nicht beantwortet.
Ich Baue eine Seite die Registerkarte Anwendung, wo möchte ich die fans, um rsvp-Veranstaltungen. Also ich habe zu prüfen, ob der Benutzer eingeloggt ist und wenn nicht muss ich login. Das klingt ziemlich einfach, aber auf FB.getLoginStatus nicht feuert callback-Funktion. Dies ist der code-Auszug:
FB.init({
appId: window.appID,
status: true,
xfbml: true,
cookie: true,
oauth: true,
channelUrl: 'http://example.com/fb/channel.html'
});
und dann habe ich einfach - natürlich, nachdem der Benutzer klickt auf eine Schaltfläche - Aufruf des FB.getLoginStatus, aber er scheint es nicht tun.
Hab ich schon überprüft, sandbox-Modus, FB.init Erfolg haben, sind die URLs in den Einstellungen der Anwendung und Entwicklung der Umwelt. Ich kann call FB.ui, obwohl FB.ui-mit-Methode: 'oauth' bekomme ich die Fehlermeldung " Die "redirect_uri" - parameter kann nicht verwendet werden in Verbindung mit der "next" - parameter, die veraltet ist.". Das ist sehr komisch, weil ich nicht genutzt habe, "next" - parameter. Aber wenn ich weiter auf "undefined" ein, funktioniert es, ich bekomme das Fenster, aber es sagt, "Angegebene URL ist nicht erlaubt durch die Anwendung der Konfiguration.". Erwarten, dass ich mich einloggen kann, dann habe ich noch den access_token. Aber in dem neuen Fenster, getLoginStatus noch nicht tun.
Also alle Ratschläge sind willkommen.
Dank,
Tamas
UPDATE:
function onBodyLoad() { //on body onload
FB.init({
appId: window.appID,
status: true,
xfbml: true,
cookie: true,
oauth: true,
channelUrl: 'http://example.com/fb/channel.html'
});
}
...
function getName() { //on button onclick
FB.getLoginStatus(function(response){
if (response.authResponse)
{
window.loggedIn = true;
debugString('Logged in');
} else
{
window.loggedIn=false;
debugString('Not logged in');
}
}, true);
if (window.loggedIn === undefined) {
debugString('getLoginStatus did not exec'); //I always get this message
}
}
UPDATE 2: ich habe eine neue App auf eine andere URL, die so konfiguriert ist wie eine eigenständige website. Dort werden diese codes funktionieren perfekt, kann ich getLoginStatus, ich kann login, etc. Gibt es einen Unterschied zwischen der Arbeit in den Kontext von FB, und in eine eigenständige website, mit FB JavaScript SDK?
- Würdest du noch mehr code?
Du musst angemeldet sein, um einen Kommentar abzugeben.
FB.getLoginStatus
nicht Feuer der Rückruf, wenn Sie die website auf eine andere domain als die, die Sie registriert die app mit. Normalerweise finde ich mich in dieser situation, wenn ich die Entwicklung lokal oder auf einem staging-server.Zum Beispiel, wenn Sie registriert die Website mit example.com und Ihre staging-server ist example.mystagingserver.com wird die callback nicht ausgelöst. In diesem Fall müssen Sie zum erstellen einer zweiten Anwendung in Facebook und die Nutzung der Anwendung-ID und den Geheimen Schlüssel für die neue app.
Ich hatte gerade das gleiche problem, obwohl es nur geschah, um einige Nutzer.
Schließlich fand ich heraus, dass, wenn Ihre app-sandbox-Modus, kein-Entwickler können die Benutzer immer noch sehen Ihre app als pagetab. Aber anrufen getLoginStatus im hintergrund fehl (auch Protokollierung aktiviert).
Dauerte eine Weile, bis Sie das herausfinden, ich hoffe, das spart jemand anderes einige Zeit.
Ich bin mit diesem code, erfolgreich. Ich bin mir nicht ganz sicher wo die Unterschiede sind.. aber ich bin mit dem ASYNC-FB-Loader.
Können Sie den folgenden code verwenden, um zu überprüfen, ob der Benutzer angemeldet ist:
Vom FB-JS-SDK-Dokumentation.
Können Sie wickeln den gesamten code in jQuery bereit :
Auch möchten Sie vielleicht zu prüfen,diese StackOverflow-Frage.
Ich hatte das gleiche problem. Ich wurde auf die facebook-login-Prozess auf unserer website. Während der Entwicklung der "FB.getLoginStatus" hat keine Antwort. Ich habe es behoben, in den Einstellungen der app auf facebook:
-In facebook gehen Sie zu "apps verwalten"
-Gehen Sie zu den "facebook login" Einstellungen der app
-Fügen Sie Ihre Entwicklung-url (zum Beispiel "https://localhost") zu den "Valid OAuth Redirect URIs"
(Vergessen Sie nicht, entfernen Sie die "https://localhost" aus der OAuth Redirect URIs, wenn Sie fertig sind mit der Entwicklung.)
Für mich nach ausgiebigen Tests können bestätigen Sie den dialog zur Anmeldung der Benutzer wird nicht anzeigen, es sei denn, Sie verwenden eine gültige
Application ID
Diese finden Sie in
Nur sicherstellen, dass Sie rufen Sie die api mit der richtigen ID.