2011-07-21 21 views
5

Próbuję zmienić adres URL przekierowania do logowania na Facebooku w mojej witrynie. Jest tak, że mogę przejść do strony, na której mogę utworzyć nowego użytkownika w mojej bazie danych, jeśli jeszcze nie istnieje, a następnie przekierować go na moją stronę główną. Jednak, gdy próbuję się zalogować, pojawia się następujący błąd na Facebooku: An error occurred with PHP SDK Unit Tests. Please try again later.Zmiana adresu URL przekierowania facebook na logowanie

Mój kod (Chcę przekierować je do mysite.com/createfbuser.php):

public function getLoginUrl($params=array()) { 
    $this->establishCSRFTokenState(); 
    $currentUrl = $_SERVER['SERVER_NAME'] . '/createfbuser.php'; 
    return $this->getUrl(
     'www', 
     'dialog/oauth', 
     array_merge(array(
       'client_id' => $this->getAppId(), 
       'redirect_uri' => $currentUrl, // possibly overwritten 
       'state' => $this->state, 
       'scope' => 'email'), 
     $params)); 
} 

The EDIT oryginalny kod czyta $currentUrl = $this->getCurrentUrl(); dla odniesienia

Odpowiedz

5

Adres URL przekierowania musi znajdować się w tej samej domenie, co dla aplikacji skonfigurowanej w ustawieniach aplikacji, poza tym, że nie ma żadnych ograniczeń, można ustawić parametr redirect_url na dowolny URL w Twojej domenie.

Podczas próby dopuszczonego aplikację jako administrator nie powinien być bardziej szczegółowy komunikat o błędzie widoczny - to całkiem prawdopodobne Błąd 191 (patrz Facebook API error 191 do innej możliwej przyczyny i rozwiązania)

+0

To wystarczy, świnia. To wystarczy. – tnw

7

Przede wszystkim don” t muszą zmieniać PHP SDK, poniżej jest próbka do uwierzytelniania użytkownika, a następnie przekierowanie do strony docelowej,

Upewnij się wymienić:

YOUR-APP-ID-TU z identyfikatorem aplikacji Facebook

YOUR-APP-API-SECRET-tu z aplikacją facebook tajnego klucza

TWOJA przekierowanie URL-tu z URL strony docelowej

<?php 

    // Requires Facebook PHP SDK 3.0.1: https://github.com/facebook/php-sdk/ 
    require ('facebook.php'); 

    define('FACEBOOK_APP_ID',"YOUR-APP-ID-HERE"); 
    define('FACEBOOK_SECRET',"YOUR-APP-API-SECRET-HERE"); 
    define('REDIRECT_URI',"YOUR-REDIRECT-URL-HERE"); 
    $user = null; 

    $facebook = new Facebook(array(
     'appId' => FACEBOOK_APP_ID, 
     'secret' => FACEBOOK_SECRET, 
     'cookie' => true 
    )); 

    $user = $facebook->getUser(); // Get the UID of the connected user, or 0 if the Facebook user is not connected. 

    if($user == 0) { 
     // If the user is not connected to your application, redirect the user to authentication page 
     /** 
     * Get a Login URL for use with redirects. By default, full page redirect is 
     * assumed. If you are using the generated URL with a window.open() call in 
     * JavaScript, you can pass in display=popup as part of the $params. 
     * 
     * The parameters: 
     * - redirect_uri: the url to go to after a successful login 
     * - scope: comma separated list of requested extended perms 
     */ 

     $login_url = $facebook->getLoginUrl($params = array('redirect_uri' => REDIRECT_URI)); 

     echo ("<script> top.location.href='".$login_url."'</script>"); 

    } else { 
     // if the user is already connected, then redirect them to landing page or show some content 
     echo ("<script> window.location.href='".REDIRECT_URI."'</script>"); 
    } 

?> 

Jeśli chcesz uzyskać rozszerzone uprawnienia, a następnie po prostu dodać inny parametr "zakres" do logowania zawartości, ex:

$login_url = $facebook->getLoginUrl($params = array('redirect_uri' => REDIRECT_URI,'scope' => 'comma-separated-list-of-requested-extended-perms')); 

więcej informacji na temat uprawnień, patrz facebook permissions docs

+0

Doceniam szczegóły, w które wszedłeś, zostały wznowione. Jednak udało mi się uruchomić mój oryginalny kod, co jest dla mnie dość proste, dziękuję. – tnw

+0

@Tory Waterman: dziękuję, doceniam to i nie ma problemu. –

Powiązane problemy