Facebook Javascript SDK-login-Probleme im Chrome/Safari (webkit) - Unsafe Javascript attempt
Ähnliche Fragen gestellt wurden, aber die Lösungen für diese Probleme scheinen nicht, um mir zu helfen.
Habe ich eine lokale Entwicklung Website eingerichtet, auf einer virtuellen Maschine ausgeführt: http://lamp.site
Wenn die index.php lädt, habe ich dieses javascript läuft (mit der richtigen appId):
/* facebook auth */
window.fbAsyncInit = function() {
FB.init({
appId: '01234567890',
channelUrl: 'http://lamp.site/channel.html'
});
};
//Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
Dann, wenn auf eine Schaltfläche geklickt wird, wird die javascript-Funktion ausgelöst wird:
#HTML
<li><a class="btn" href="#" ng-click="connectToFacebook()">Connect with Facebook</a></li>
#Snippet in AngularJS Controller
$scope.connectToFacebook = function() {
facebookConnect.authenticate(
function(reason) { //fail
console.log(reason);
},
function(user) { //success
console.log('logged in',user);
//Session.login();
});
return false;
}
#Factory in AngularJS module
.factory('facebookConnect', function() {
return {
authenticate: function(fail, success) {
FB.login(function(response) {
console.log(response);
if (response.authResponse) {
FB.api('/me', success);
} else {
fail('User cancelled login or did not fully authorize.');
}
});
}
}
Wenn ich drücken Sie die Schaltfläche in Firefox, es funktioniert! Schön, ich bekomme all die richtigen Dinge wieder aus Facebook.
Wenn ich Chrome oder Safari auf meinem PC, oder Safari Mobile auf meinem iPhone, bekomme ich die facebook-login-Fenster popup mit der Meldung "Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut.", und die Konsole folgenden Daten:
Unsafe JavaScript attempt to access frame with URL
https://www.facebook.com/dialog/permissions.request from frame with URL
http://lamp.site/index.php?page=login. Domains, protocols and ports must match.
Object
authResponse: null
status: "not_authorized"
__proto__: Object
User cancelled login or did not fully authorize.
Habe ich meinen lokalen Test-URL in der facebook-app in der Entwickler-Sektion, die funktioniert, weil es loggt mit Firefox. Dies ist meine channels-Datei, gespeichert auf http://lamp.site/channel.html
<script src="http://connect.facebook.net/en_US/all.js"></script>
Habe ich versucht, mit der channel-Datei mit und ohne http: in der src= tag.
Die facebook-app hat die folgenden Einstellungen:
- App domains: Lampe.Website
- Website-URL: http://lamp.site
- Mobile-Website-URL: http://lamp.site
So funktioniert es im Firefox, was zum Teufel mache ich falsch. Ich kann nicht nur ermöglichen cross-site-scripting als Benutzer würde das nicht tun, und dies wird in eine mobile Website.
Jemand anderes es geschafft dieses problem zu lösen, vor kurzem?
Alle anderen ähnliche Fragen sind unbeantwortet geblieben... jemand muss behoben haben!
EDIT: ich habe eine vereinfachte version, in der neuen app-ID, auf meiner website.
http://dev.willshawmedia.com/fb/
Hier ist der Screenshot mit der app-ID von Facebook Dev application panel
Können Sie sich den Quellcode ansehen, es ist kopiert direkt von hier:
https://developers.facebook.com/docs/guides/web/
Und die channel-Datei existiert:
http://dev.willshawmedia.com/fb/channel.html
Kann ich nicht machen es einfacher, ich bekomme immer noch die "Ein Fehler ist aufgetreten. Bitte versuchen Sie es später erneut." angezeigt wird, aber jetzt ist es nur nach vorne auf Facebook, anstatt die Authentifizierung und schließen.
Edit: mir fehlte die Website-URLs, die ich Hinzugefügt habe, diejenigen, die einfaches Beispiel ist die Arbeit.
Wie es funktioniert auf meiner live-site, muss es tun mit meinem lokalen Domänen. Aber ich habe diese Zeile in meine /etc/hosts/ Datei:
192.168.0.13 lamp.site
Das ist die IP-Adresse der VirtualBox Ubuntu server auf meinem laptop laufen. Ich kann surfen, die Website in Ordnung.
- Ich habe das gleiche problem, mit PhoneGap-plugin für native Facebook-Authentifizierung. Gestern, als ich das Letzte mal den app - es funktionierte. Heute - Fehler. Bitte Versuchen Sie es später erneut 🙁 Hoffe, dies ist eine Globale Facebook-Fehler
- warum tun Sie das laden der fb-sdk asynchron? haben Sie versucht, es zu laden in Standard-Weg?
- Ich habe nicht versucht, es zu tun die nicht async, werde ich versuchen, aber das Facebook Docs zeigt die asynchrone Art und Weise, in Ihrer Beispiel: developers.facebook.com/docs/reference/javascript. Es ist besser für die Ladezeiten für eine Sache.
- Wenn ich mit der synchronen Methode bekomme ich das popup und der gleiche Fehler, aber ok, nur dauert es bei mir auf facebook, es nicht umleiten mir. Und firefox nicht mehr funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sandbox-Modus deaktiviert werden muss, damit es funktioniert in Chrome. Das ist es, das ist alles dauerte es.
Ich aktiviert, der Modus, wie ich dachte, dass würde aufhören, und es zeigt sich in der Suche, was ich nicht will. Und als es funktionierte in Firefox konnte ich nicht sehen, dass ein problem. Aber dort gehen Sie, ich schaltete sandbox-Modus und es begann sofort zu arbeiten.
Ich nicht unter stand, warum das so ist, stoppen Chrome aber.
Ihre Fabrik hat einige seltsam JavaScript:
return new function()
... außerhalb, dass ich nicht sehen ein Problem. Ich bin mit diesem gleichen grundlegenden Technik, und ich habe keine Probleme in Chrome.Sicher sein, dass Ihre Facebook-Anwendung einrichten Ihrer domain (nennen wir es mal "mydomain.com")... um DANN lokal testen, müssen Sie Bearbeiten Ihre hosts-Datei zu zeigen mydomain.com auf 127.0.0.1... also die URL in der browser-location, dem entspricht, was Facebook erwartet.
Ist wohl der einzige Unterschied zwischen dem, was ich mache und was du machst.
... auch sicherstellen, dass Ihre App-ID ist die richtige App-ID von der Einrichtung Ihres Facebook-Anwendung. Double-check it. BS "test" - App-ID wird Ihnen die Fehlermeldung auch.
-
-
BEARBEITEN : auf der
new function(){ }
vor... , die ich glaube nicht, dass dein problem.... Ich möchte ein wenig mehr erklären:ist das gleiche wie
Weil die
new
Schlüsselwort wird verwendet, um eine Funktion aufzurufen, die als Objekt-Konstruktor, und Sie sind mit neu auf eine anonyme Funktion, die Sie nicht verwenden können wieder, so gibt es keinen Grund, es zu erklären.Also das snippet könnte (und wahrscheinlich sollte):
return function()
, ich"m nicht sicher, was der Fehler ist da. Es ist definitiv die richtige app-ID, doppelt geprüft, und funktioniert in Firefox sowieso. Und ich habe den Facebook-app-Einstellungen zu meinem lokalen host-URL für den "app domain", Lampe.Ortnew
Schlüsselwort ist reserviert für den Aufruf von Funktionen als Objekt-Konstruktoren.Object function () { this.authenticate = function... } has no method 'authenticate'