【发布时间】:2021-11-13 07:30:07
【问题描述】:
我对此很陌生。我正在尝试使用 facebook 登录并发布一些内容,但是当我尝试这样做时出现错误:
警告 无法加载 URL:此 URL 的域未包含在应用程序域中。要加载此 URL,请将应用程序的所有域和子域添加到应用程序设置中的应用程序域字段。
我已下载 SDK for php 并将其保存在我的根文件夹中。
这是我的 index.php
<?php
// Include FB configuration file
require_once 'fbConfig.php';
if(isset($accessToken)){
if(isset($_SESSION['facebook_access_token'])){
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}else{
// Put short-lived access token in session
$_SESSION['facebook_access_token'] = (string) $accessToken;
// OAuth 2.0 client handler helps to manage access tokens
$oAuth2Client = $fb->getOAuth2Client();
// Exchanges a short-lived access token for a long-lived one
$longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
$_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
// Set default access token to be used in script
$fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
}
//FB post content
$message = 'Test from website';
$title = 'Post From Website';
$link = 'http://www.algunaUrlParaRedireccionarEnElPost.com/';
$description = 'Test';
$picture = 'https://slp-statics.astockcdn.net/static_assets/staging/21fall/homepage/curated-asset-collection/card-2.jpg?width=580';
$attachment = array(
'message' => $message,
'name' => $title,
'link' => $link,
'description' => $description,
'picture'=>$picture,
);
try{
// Post to Facebook
$fb->post('/me/feed', $attachment, $accessToken);
// Display post submission status
echo 'The post was published successfully to the Facebook timeline.';
}catch(FacebookResponseException $e){
echo 'Graph returned an error: ' . $e->getMessage();
exit;
}catch(FacebookSDKException $e){
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
}else{
// Get Facebook login URL
$fbLoginURL = $helper->getLoginUrl($redirectURL, $fbPermissions);
// Redirect to Facebook login page
echo '<a href="'.$fbLoginURL.'"><img src="fb-btn.png" /></a>';
}
我也得到了这个用于 sdk 配置的文件(config.php)
<?php
if(!session_id()){
session_start();
}
// Include the autoloader provided in the SDK
require_once __DIR__ . '/php-graph-sdk-5.x/src/Facebook/autoload.php';
// Include required libraries
use Facebook\Facebook;
use Facebook\Exceptions\FacebookResponseException;
use Facebook\Exceptions\FacebookSDKException;
/*
* Configuration and setup Facebook SDK
*/
$appId = 'algunID'; //Facebook App ID
$appSecret = 'algunaAppSecret'; //Facebook App Secret
$redirectURL = 'http://localhost:8077/fbPost/'; //Callback URL
$fbPermissions = array('publish_actions'); //Facebook permission
$fb = new Facebook(array(
'app_id' => $appId,
'app_secret' => $appSecret,
'default_graph_version' => 'v2.10',
));
// Get redirect login helper
$helper = $fb->getRedirectLoginHelper();
// Try to get access token
try {
if(isset($_SESSION['facebook_access_token'])){
$accessToken = $_SESSION['facebook_access_token'];
}else{
$accessToken = $helper->getAccessToken();
}
} catch(FacebookResponseException $e) {
echo 'Graph returned an error: ' . $e->getMessage();
exit;
} catch(FacebookSDKException $e) {
echo 'Facebook SDK returned an error: ' . $e->getMessage();
exit;
}
?>
我寻找了一个解决方案,但每个人都修复了这个错误,将他们的域 url 添加到他们在 facebook 开发人员创建的应用程序中,但我不能,因为我在 localhost 上运行它
【问题讨论】:
-
您必须在您的 Facebook 应用程序中将域列入白名单
-
但我在本地主机上工作并且不允许
-
转到您的应用程序
Settings->Advanced->Share Redirect Allow List-> 添加localhost或勾选Allow Cross Domain Share Redirects
标签: php facebook facebook-graph-api facebook-php-sdk