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;
}
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). –