【问题标题】:Unable to load URL: The domain of this URL is not included in the application domains - facebook无法加载 URL:此 URL 的域未包含在应用程序域中 - facebook
【发布时间】: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


【解决方案1】:
Facebook Login -> Settings -> Valid OAuth redirect URIs

您还应该记住,www.example.com 与 example.com 不同。将这两种格式都添加到重定向 URL。

您网站上的使用 Facebook 登录按钮链接到:

https://www.facebook.com/v2.2/dialog/oauth?client_id=1500708243571026&redirect_uri=http://openstrategynetwork.com/_oauth/facebook&display=popup&scope=email&state=eyJsb2dpblN0eWxlIjoicG9wdXAiLCJjcmVkZW50aWFsVG9rZW4iOiIwSXhEU05XamJjU0VaQWdqcmF6SXdOUWRuRFozXzc0X19lbVhGWUJTZGNYIiwiaXNDb3Jkb3ZhIjpmYWxzZX0=

注意:redirect_uri=http://openstrategynetwork.com/_oauth/facebook

如果您改为将链接更改为:

redirect_uri=http://openstrategynetwork.com/_oauth/facebook?close

它应该工作。或者,您可以将 Facebook 链接更改为 http://openstrategynetwork.com/_oauth/facebook

您还可以将 http://localhost/_oauth/facebook 添加到有效的重定向 URI。

Facebook 要求您将重定向 URI 列入白名单,否则人们可以使用 Facebook 登录以获得您的服务,然后将他们的访问令牌发送到攻击者的服务器!而且您不希望这种情况发生;]

【讨论】:

  • 我应该在哪里更改redirect_uri=http://openstrategynetwork.com/_oauth/facebook?close?我在 config.php $fbPermissions = array('publish_actions'); 中将其更改为 $fbPermissions = array('redirect_uri=http://openstrategynetwork.com/_oauth/facebook?close'); ,但我收到另一个错误。对不起,我是新手
  • 也尝试添加 localhost 来重定向 URI 但不允许添加 localhost。
【解决方案2】:

转到您的应用程序Settings -> Advanced -> Share Redirect Allow List -> 添加localhostCheck Allow Cross Domain Share Redirects

【讨论】:

  • 我添加了localhost,localhost:8077,localhost:8077/fbPost 以共享重定向允许列表,但仍然无法正常工作。同样在基本设置下添加了一个平台(http://localhost:8077/)。你认为我的代码有问题吗?
猜你喜欢
  • 2016-10-05
  • 1970-01-01
  • 2018-08-30
  • 2018-09-09
  • 2016-09-12
  • 2018-08-26
  • 2020-07-04
  • 2018-06-05
  • 1970-01-01
相关资源
最近更新 更多