2014-02-22 7 views
15

ich auf AWS Elastic Beanstalk meine PHP Yü Anwendung bin Hosting und damit die Datenbank mit Sitzungen zu speichern. Ich habe Facebook Login erfolgreich mit Hybridauth in einer Shared Hosting Umgebung implementiert. Wenn ich auf Elastic Beanstalk Gastgeber Facebook Login gibt den Fehler:„Sie können nicht auf diese Seite zugreifen direkt“ - Hybrid Auth

"You cannot access this page directly" 

Die URL endet als:

http://mydomain.com/hybridauth/default/callback?hauth.start=Facebook&hauth.time=1393106016 

Ich habe von here gelernt, dass dies auf Facebook verbunden ist zurück an die Anwendung aufrufen, aber eine andere Sitzung finden. Endpoint.php wirft dann den Fehler:

  # Init Hybrid_Auth 
     try { 
      // Check if Hybrid_Auth session already exist 
      if (! isset($_SESSION["HA::CONFIG"])) { 
       header("HTTP/1.0 404 Not Found"); 
       die("You cannot access this page directly."); 
      } 

Wie kann ich sicherstellen, Facebook auf die gleiche Sitzung ruft zurück und schließt erfolgreich mit hybridauth in?

+0

Verwenden Sie ein Plugin oder verwenden Sie eine direkte Implementierung? – Michiel

+0

Sorry, ich verstehe die Frage nicht vollständig. Ich habe diese Erweiterung - http://www.yiiframework.com/extension/hybridauth/ - in meine Yii-App implementiert. – goose

+0

hast du lösung? –

Antwort

2

Überprüfen Sie die Umleitungs-URL der Facebook-Anwendung. Facebook lässt mehrere Weiterleitungs-URLs nicht zu. Jedes Mal, wenn Sie Ihr Hosting/Ihre Domain/Adresse ändern, müssen Sie die Weiterleitungs-URL der Facebook-Anwendung neu konfigurieren oder einen anderen Berechtigungsnachweis verwenden.

Auch sollten Sie Ihre Umleitungs-URL so etwas wie diese: http://mydomain.com/hybridauth/?hauth.done=Facebook

+0

Danke für Ihre Antwort. Ich habe sichergestellt, dass dies richtig konfiguriert ist, ist es nicht dieses Problem, leider. – goose

1

Für mich ist es auf der Hauptdomain gearbeitet, aber nicht auf einer Sub-Domain. Ich habe herausgefunden, dass es die base_url in config.php war, die den Fehler verursacht hat.

Statt

"base_url" => "https://mydomain.com/inc/hybridauth/",

habe ich es zu

"base_url" => "https://".$_SERVER['HTTP_HOST']."/inc/hybridauth/",

Jetzt funktioniert es überall, wo ich es ausdrückte.

+0

Ich versuchte Ihre Antwort in einem Plugin, das ich für meine Website entwickle, da es nicht auf einem Standard-MVC-Framework basiert. Ich bekam auch Seite kann nicht Problem angezeigt werden. Aber nachdem ich die Basisurl ändere => "base_url" => "https: //". $ _ SERVER ['HTTP_HOST']. "/ inc/hybridauth /", es sagt jetzt Ein Fehler ist während einer Verbindung zu wstation.wzx aufgetreten .com. SSL hat einen Datensatz erhalten, der die maximal zulässige Länge überschritten hat. (Fehlercode: ssl_error_rx_record_too_long) – Vikram

+0

Hallo @Vikram, das ist ein SSL-Problem, das Sie jetzt haben. Wenn Sie nicht mit SSL arbeiten, ändern Sie einfach https zu http, oder besser, wenn Sie beide "" verwenden. "/ SERVER ['HTTP_HOST']."/Inc/hybridauth/"'. Weitere Informationen zu dem von Ihnen erwähnten Fehler finden Sie unter http://stackoverflow.com/questions/119336/ssl-error-rx-record-tool-long-and-apache-ssl – PaulMrG

1

Für alle anderen, die mit diesem Problem zu kämpfen haben, und das nicht mit dem Problem der Registrierung der www-Domäne zusammenhängt, hatte mein Problem damit zu tun, dass ich nicht in das php-Sitzungsverzeichnis schreiben konnte. Nicht sicher, wie oder wann es geändert wurde, aber wenn Sie nicht in /var/lib/php/5.5/session schreiben können, wird hybridauth nicht funktionieren.

2

Dieser arbeitete für mich auch:

"base_url" => "https://example.com/inc/hybridauth/",

habe ich es zu

"base_url" =>. "Https: //" $ _ SERVER ['HTTP_HOST']. "/ Inc/hybridauth /",

5

Es ist aufgrund PHP SESSION Name Wenn Sie Session-Namen in der Datei config von Yii ändern. Dann müssen Sie hinzufügen session_name('samar_v4'); in Datei protected/modules/user/vendors/hybridauth/Hybrid/Endpoint.php in Starten von funktoin authInit

0

Ich fand dieses Problem, das unlösbar scheint. Ich gab auf, als mein Instinkt mich dazu brachte, einen Test zu machen und alles funktionierte.

Für jeden mit dem gleichen Problem haben Sie eine Frage: Die Datei, die die API aufruft, ist im selben Verzeichnis es?

Ich arbeitete nur, wenn ich meine Datei in den gleichen Ordner wie die Datei config.php. Probieren Sie es dort aus und sagen Sie mir, ob es funktioniert!

Eine Umarmung und Grüße an alle!

1

sich nach den anderen Antworten, ich glaube, das ist eine Sitzung Problem ist, vielleicht die Sitzung unter dem falschen Domäne gestartet wird und dann nicht unter dem anderen Domain wieder abgerufen werden können.

Ich löste dies durch verschiedene Serveralias-Einstellungen von meiner Entwicklung Apache Konfiguration zu entfernen.

dieses 'verursacht' der Fehler:

ServerName mydomain.com.au.localhost 
ServerAlias www.mydomain.com.au.localhost 
ServerAlias localhost.mydomain.com.au  # << using this one 

dies den Fehler behoben:

#ServerName mydomain.com.au.localhost 
#ServerAlias www.mydomain.com.au.localhost 
ServerName localhost.mydomain.com.au  # << using this one 

apachectl restart 

(ich normalerweise verwenden mydomain.com.au.localhost so sie in denn ich verlasse später Verwendung.)

0

ich löste meine besondere HybridAuth „Sie können nicht auf dieser Seite zugreifen direkt“ Fehler mit dem Domainnamen auf dem Session-Cookie. Meine App existiert in einer Subdomain und ich habe die Weiterleitung so entworfen, dass sie auf socialize.domain.tld verweist und der Cookie den _Endpoint nicht erreicht.

Ändern der Sitzung Domäne .domain.tld es gelöst. - Hoffe, das hilft :)

1

ich das gleiche Problem Hybrid Auth 2.8 verwendet hatte. Es bezieht sich auf unseren benutzerdefinierten Session-Handler, der von session_set_save_handler() festgelegt wird. Hybrid Auth verwendet Standard-PHP-Sitzungen, sodass Hybrid Auth nach dem Umleiten und Öffnen einer neuen Sitzung statt des benutzerdefinierten Sitzungshandlers standardmäßige PHP-Dateisitzungen verwendet. Dies führt zum Verlust von Konfigurationsdaten aus unserer Sitzung und zum Abrufen dieser Fehlermeldung.

Ich löste dieses Problem, indem Sie unseren eigenen benutzerdefinierten Session-Handler am Anfang von hybridauth/index.php (im selben Verzeichnis wie config.php und live.php) hinzugefügt. Das zwingt Hybrid Auth, Ihren benutzerdefinierten Sitzungshandler zu verwenden.

Verwandte Themen