1

Es ist sehr merkwürdig. Ich habe eine Facebook-Anmeldung über Javascript SDK mit Cookie auf True gesetzt, und beim Rückruf versuche ich, diesen Cookie zu bekommen, und dann den Besucher in meiner Datenbank hinzufügen oder nicht.Facebook Login über Javascript SDK funktioniert auf Mobil und localhost aber nicht auf Desktop-Computern

Es funktioniert auf Handys und localhost mit Test-App, aber scheint nicht auf allen Desktop-Computern zu funktionieren (funktioniert auf meinem iMac, nicht auf meinem Laptop). Ich habe den Cache und Cookies auf dem betroffenen Browser gelöscht, ändert nichts.

Die $helper->getAccessToken gibt mir eine NULL-Variable, wenn ich var_dump verwende, um es zu überprüfen, sonst bekomme ich eine leere Seite.

Es funktionierte gut, kurz bevor ich meine Website in SSL legte.

Jede Hilfe sehr geschätzt.

Meine Website ist online: www.KomuniD.com sollten Sie versuchen, sich anzumelden und mir ein Feedback geben.

Mein fb_login.js:

logInWithFacebook = function() { 
    if ("standalone" in navigator && navigator.standalone) { 
    $("a").click(function (event) { 
     event.preventDefault(); 
     window.location = $(this).attr("href"); 
    }); 
    } 

    FB.login(function(response) { 
    if (response.authResponse) { 
     window.location.replace('http://www.komunid.com/fb-callback.php'); 
    } else { 
     alert('User cancelled login or did not fully authorize.'); 
    } 
    }, 
    { 
    scope: 'public_profile,email,user_friends', 
    auth_type: 'rerequest', 
    }); 

    return false; 
}; 

window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : 'my-app-id', 
     status  : true, 
     xfbml  : true, 
     cookie  : true, 
     version : 'v2.6' 
    }); 
    }; 

    (function(d, s, id){ 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) {return;} 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/fr_FR/sdk.js"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk')); 

Mein fb_callback.php:

<?php 
session_start(); 

require __DIR__ . '/init.php'; 

$fb = new Facebook\Facebook([ 
    'app_id' => 'my-app-id', 
    'app_secret' => 'my-app-secret', 
    'default_graph_version' => 'v2.6', 
    'cookie' => true 
    ]); 

$helper = $fb->getJavaScriptHelper(); 

try { 
    $accessToken = $helper->getAccessToken(); 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    echo 'Graph returned an error: ' . $e->getMessage(); 
    exit; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo 'Facebook SDK returned an error: ' . $e->getMessage(); 
    var_dump($helper->getPersistentDataHandler()); 
    var_dump($_GET, $_SESSION); 
    exit; 
} 

if (!isset($accessToken)) { 
    if ($helper->getError()) { 
    header('HTTP/1.0 401 Unauthorized'); 
    echo "Error: " . $helper->getError() . "\n"; 
    echo "Error Code: " . $helper->getErrorCode() . "\n"; 
    echo "Error Reason: " . $helper->getErrorReason() . "\n"; 
    echo "Error Description: " . $helper->getErrorDescription() . "\n"; 
    } else { 
    header('HTTP/1.0 400 Bad Request'); 
    echo 'Bad request'; 
    } 
    exit; 
} 

Antwort

0

Früher prima, nur zu arbeiten, bevor ich in SSL meine Website.

Nun, wenn Sie auf HTTPS umgeschaltet wird, dann diese:

window.location.replace('http://www.komunid.com/fb-callback.php'); 

sollte eine HTTPS-URL als gut.

+0

Dank CBroe, ich https Lage geändert, aber auf meinem Laptop immer noch nicht funktioniert. Das wirklich seltsame Ding ist, dass es auf meinem mobilen und Desktop-iMac funktioniert, und nicht auf meinem Macbook (selbst wenn ich Cache zurücksetze). –

0

Sie sollten Ihre Domain von http://yourdomain.com/ zu http://yourdomain.com Config.
mit mir zu arbeiten, ohne ssl oder https