Wie kan mij helpen met het Facebook login op een website?
Ik heb een website waar je altijd via Facebook kon inloggen, dit heeft altijd gewerkt maar blijkt op versie 2.2 te zijn gemaakt.
Inmiddels zitten ze op versie 3.2 en nu werkt het niet meer en krijg het ook niet werkend momenteel.
Wie heeft er zin en tijd om mee te denken zodat het weer werkt.
Dit is de fout wat die nu aangeeft:
Graph returned an error: (#100) Invalid edge (access_token) on node type (Page)
PHP: facebooklogin.php
<?php
session_start();
error_reporting(0);
//already logged in?
if ($_SESSION["valid_een"] && $_SESSION["valid_twee"] && !isset($_GET["logout"])) {
include_once("../includes/db_connect.php");
$url = WEBSITE_URL."/members/";
header("Location: $url");
exit;
}
include_once("../includes/functions.php");
require(WEBSITE_DIR.'/includes/Facebook/autoload.php');
$fb = new Facebook\Facebook([
'app_id' => $FB_APPCODE,
'app_secret' => $FB_SECTRET,
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email']; // Optional permissions
$loginUrl = $helper->getLoginUrl(WEBSITE_URL.'/members/fb-callback.php', $permissions);
header("Location: $loginUrl");
?>
Toon Meer
PHP: fb-callback.php
<?php
session_start();
error_reporting(0);
//already logged in?
if ($_SESSION["valid_een"] && $_SESSION["valid_twee"] && !isset($_GET["logout"])) {
include_once("../includes/db_connect.php");
$url = WEBSITE_URL."/members/";
header("Location: $url");
exit;
}
include_once("../includes/functions.php");
require(WEBSITE_DIR.'/includes/Facebook/autoload.php');
$fb = new Facebook\Facebook([
'app_id' => $FB_APPCODE,
'app_secret' => $FB_SECTRET,
'default_graph_version' => 'v2.2',
]);
$helper = $fb->getRedirectLoginHelper();
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();
exit;
}
if (isset($accessToken)) {
$fb->setDefaultAccessToken($accessToken);
try {
$response = $fb->get('/me?fields=id,name,email');
$user = $response->getGraphUser();
} 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();
exit;
}
}
$user = $response->getGraphUser();
//client data from FB
$fb_client_id = $user['id'];
$fb_client_name = $user['name'];
$fb_client_email = $user['email'];
//check if user exists in our database check on facebook id or email
// email exists, but no facebook id? update profile with facebook id
$fb_result = q ("select
wgid,emailmd,wachtwoordmd,valid
from members where
email = '$fb_client_email' AND facebookid = ''
limit 1");
//yes, member exists, login
if ($fb_result->num_rows>0){
$row_fb = $fb_result->fetch_assoc();
$local_client_id = $row_fb["wgid"];
//update profile with facebook id
$sql_insert = q("update members set
facebookid = '$fb_client_id'
where wgid = '$local_client_id'
LIMIT 1");
}
//check if facebook id is member
$fb_result = q ("select
wgid,emailmd,wachtwoordmd,valid
from members where
email = '$fb_client_email' AND facebookid = '$fb_client_id'
limit 1");
//yes, member exists, login
if ($fb_result->num_rows>0){
$row_fb = $fb_result->fetch_assoc();
//user with this email is blocked by admin
if($row_fb["valid"]==0){
$logoutUrl = $facebook->getLogoutUrl(array( 'next' => WEBSITE_URL.'/members/login.php?blockeduser=1'));
header("Location: $logoutUrl");
exit;
}
$latste_inlog = time();
$inlog_update = "update members
set laatsteinlog = '$latste_inlog', xingelogd=xingelogd+1
where facebookid = '$fb_client_id'
LIMIT 1";
$inlog_update = q($inlog_update);
$_SESSION["valid_wgid"] = $row_fb["wgid"];
$_SESSION["valid_een"] = $row_fb["emailmd"];
$_SESSION["valid_twee"] = $row_fb["wachtwoordmd"]; //sha1($wachtwoord);
if(isset($_SESSION["doost"])) {
$urlto = StripDanger($_SESSION["doost"]);
unset($_SESSION["doost"]);
header("Location: ".$urlto);
}else
header("Location: ".WEBSITE_URL."/members/?viafb");
exit;
}
//no? create new profile
else{
//we did not get email from facebook, or user denied
if(empty($fb_client_email)){
header("Location: ".WEBSITE_URL."/members/register.php?set=1&facebook=false");
exit;
}
//no, member here for the first time
// No errors, so save to DB
$time = time();
$valid = generatePassword(20);
$emailmd = sha1(STD_WN_MAIL.$fb_client_email);
$validto = time(); //prob never used, but just to be sure.
//create pass for customer wich will be send to him via email
$wachtwoord = generatePassword(6);
$wachtwoordmd = sha1(STD_WN_PASS.$wachtwoord);
//from fb
$contact = StripDanger($fb_client_name);
if(empty($username))
$username = $contact;
//if(STD_CREDITS==999)
$newcredits = '0';
//else $newcredits = STD_CREDITS;
//put it all in the DB
$sql_insert = "insert into members
(facebookid,email, emailmd, wachtwoordmd, bedrijf,username,bedrijfsnaam, contactpersoon,adres,postcode,
woonplaats, glatti, glongg, telefoon, geslacht, website, lidsinds, credits, validto, verlengd, valid, receivemail)
values
('$fb_client_id','$fb_client_email','$emailmd', '$wachtwoordmd', '0','$contact','','$contact','','',
'', '', '', '', '1', '', '$time', '$newcredits', '$validto', '$time', '1','1')";
$result = q($sql_insert);
$klantenid = mysqli_insert_id($GLOBALS['db']);
$_SESSION["valid_wgid"] = $klantenid;
$_SESSION["valid_een"] = $emailmd;
$_SESSION["valid_twee"] = $wachtwoordmd; //sha1($wachtwoord);
//mail wachtwoord naar user:
$message = formatString(LANG_COMP_REG_HELLO,array(str_replace('\\','',$contact))).', <br /><br />
'.formatString(LANG_COMP_REG_WELCTA,array(ucfirst(STD_DOMEIN))).'<br /><br />
'.LANG_COMP_REG_EMAD.': '.$fb_client_email.'<br />
'.LANG_COMP_REG_PASS.': '.$wachtwoord.'<br />
<br />
'.LANG_COMP_REG_REAGARDS.',<br />
<br />
'.ucfirst(STD_DOMEIN).'<br />
<br />
<br />
'.LANG_COMP_REG_THAUTOP;
//echo $message; //debug test
$subject = formatString(LANG_COMP_REG_SUBJECT,array(ucfirst(STD_DOMEIN))); //STD_DOMEIN;
$x = send_mail(STD_EMAIL_WEB,STD_DOMEIN,$fb_client_email,$contact,$subject,$message);
header("Location: ".WEBSITE_URL."/members/?welcomefb");
exit;
}
exit;
?>
Toon Meer