首页 > 解决方案 > 使用 Facebook“无法加载 URL”登录我的网站时出错

问题描述

我从我的网站使用 Facebook API 登录时遇到问题,您第一次登录时一切正常,但当您第二次登录时,您会收到以下错误消息“无法加载 URL:此 URL 不包含在应用程序的域中。为了能够加载此 URL,请将应用程序的所有域和子域添加到应用程序设置中的应用程序域字段。”

我已经在 Facebook Developer 中正确配置了我的应用程序,然后我分享连接文件的代码:

<?php

if (isset($_GET['code']) || strpos($_SERVER["HTTP_REFERER"],'facebook') !== false) {
	require_once("../includes/core.php");
	require_once("../social/Facebook/autoload.php");

	} else {

	require_once("assets/includes/core.php");
	require_once("assets/social/Facebook/autoload.php");
}

if (!session_id()) {
    session_start();
}

$fb = new Facebook\Facebook([
  'app_id' => siteConfig('fb_app_id'),
  'app_secret' => siteConfig('fb_app_secret'),
  'default_graph_version' => 'v2.3',

  ]);

$helper = $fb->getRedirectLoginHelper();
define('APP_URL','https://www.ciines.com/assets/sources/fbconnect.php');
$permissions = [];
$_SESSION['FBRLH_state']=$_GET['state'];

try {
	$accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookSDKException $e) {
	echo $e->getMessage();
	exit;
}

if (isset($accessToken)) {
	$request = $fb->get('/me?fields=id,name,email,gender', $accessToken);
	$graphNode = $request->getGraphNode(); 	
	$location = json_decode(file_get_contents('http://freegeoip.net/json/'.$_SERVER['REMOTE_ADDR']));		
  	$fbid = $graphNode['id'];         
	$name = $graphNode['name']; 
	$email = $graphNode['email'];  
	$gender = $graphNode['gender']; 	
	fbconnect($fbid,$name,$email,$gender,$location);
	header("Location: ".$sm['config']['site_url']);  

} else {

	$permissions = ['email']; // optional
	$callback = $sm['config']['site_url'].'assets/sources/fbconnect.php';
	$loginUrl = $helper->getLoginUrl($callback,$permissions);

	header("Location: ".$loginUrl);

}

?>

标签: phpfacebookloginoauth

解决方案


推荐阅读