Facebook OAuth"此网址的域名未包含在应用的域名中#34;

时间:2016-05-06 03:22:38

标签: facebook laravel facebook-graph-api oauth laravel-socialite

首先我要说的是,我已经搜索了这个问题的答案了很长一段时间......

我尝试设置Facebook OAuth以使用我的计算机上本地开发的应用程序。使用Facebook授权,一切都很完美UNTIL我从使用localhost转移到另一个域名(仍然是我的机器本地。)现在我收到以下错误。

  

无法加载网址:此网址的域名未包含在应用内容中   域。要加载此网址,请添加所有域和子域   应用程序设置中的应用程序域字段。

我的主机文件包含127.0.0.1 photovote.dev(效果很好)

我的应用中的重定向(使用社交网站)为http://photovote.dev/auth/facebook/callback

在我的Facebook App设置中......

  • 我的应用域名为photovote.dev
  • 我的网站网址为http://photovote.dev/
  • 我的有效OAuth重定向URI是 http://photovote.dev/auth/facebook/callback

错误消息时的URL是..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWE8uOKTcf65JmePtG95MZLDD

我不知道问题是什么......

屏幕截图1
Screen Shot

屏幕截图2 enter image description here

29 个答案:

答案 0 :(得分:192)

万一有人碰到这个并正在寻找这些设置(就像我一样)

你必须

  1. 在左侧,点击" +添加产品"并选择" Facebook登录" (它是在 我的顶部)
  2. 查看左侧可用的新设置
  3. 您现在可以在"产品设置"
  4. 上进行这些OAuth设置

    enter image description here

    其他信息:确保将http://localhost:3000之类的回拨网址添加到Facebook登录设置页面上的Valid OAuth redirect URIs字段

答案 1 :(得分:67)

如果您在Facebook中创建应用程序时输入了错误的详细信息,通常会发生这种情况。或者您是否更改了现有应用程序的URL?

您能否在此页面中重新检查您的APP设置?

https://developers.facebook.com/apps

  1. 选择正确的应用并单击编辑按钮;

  2. 检查网址&路径已正确输入,并指向您已安装Ultimate Facebook插件的网站。

答案 2 :(得分:50)

我遇到了同样的问题。我通过将我的OAuth重定向URI作为参数添加到getAccessToken函数调用来解决它:

$redirectLoginHelper->getAccessToken("https://www.example.com/myfacebookcallback")

如果没有任何参数发送到该函数,SDK会自行生成重定向URI,这应该有效,但在我的情况下它并没有。

希望这有助于某人。

答案 3 :(得分:32)

确保您的应用是公开的。 点击+添加产品 现在转到products => Facebook登入 现在执行以下操作:

有效的OAuth重定向URI:example.com /

取消对回拨网址的授权:https://example.com/facebookapp http://unicodeitsolutions.com/

答案 4 :(得分:18)

以下是我为解决此问题所做的工作: enter image description here

基本上:

1)启用" 嵌入式浏览器OAuth登录"

2)禁用" 使用严格模式重定向URI "并输入重定向    URI就像我做的那样。

3)保留所有其他选项。

4)保存更改。

5)享受:)

答案 5 :(得分:7)

我遇到了同样的问题,它来自错误的client_id / Facebook App ID。

您是否将Facebook应用程序切换为“公开”或“在线”?当您这样做时,Facebook会创建一个带有新App ID的新应用程序。

您可以将网址中的“client_id”参数值与Facebook信息中心中的值进行比较。

答案 6 :(得分:6)

我修复它的方式:我转到了有效OAuth重定向URI文本框并设置了完全网址,不仅仅是域

之前:https://my-website.com

之后:https://my-website.com/facebookoauth/facebooklogin

(在您的情况下,网址可能会有所不同,请在浏览器的地址栏中查看)。

这是由设置使用重定向URI的严格模式引起的,该模式已锁定在“是”位置。

答案 7 :(得分:5)

点击here Code Project! 其代码项目示例。它对我有用

enter image description here

答案 8 :(得分:5)

大部分时间都没有在FB信息中心的产品部分插入正确的有效的OAuth重定向网址。我建议按照下面的步骤进行操作

01. 检查应用程序的基本设置是否可以随身携带下面的图片

enter image description here

02. 检查您是否添加了产品

如果没有,您可以通过点击下面显示的+正弦轻松添加登录产品。

如果是,只需进入产品设置。 enter image description here

03. 检查您是否提供了有效的OAuth重定向网址

它简单的意思是登录后应该是什么。它不是你的回调URl.You可以在我的下面的图片中看到我添加了几个重定向URL。 enter image description here

  1. 有任何问题进一步观看我的视频 - > https://www.youtube.com/watch?v=mdhubrzV5y8&t=3s

答案 9 :(得分:4)

我遇到了同样的问题,

我刚刚在我的应用设置http://localhost/Facebook%20Login%20Test.html中将我的本地地址https://developers.facebook.com/apps的链接添加到<script src="Scripts/jquery-1.10.2.js" type="text/javascript"></script> <script src="Scripts/jquery-ui1.11.4.js" type="text/javascript"></script> <script src="Scripts/Watermark.min.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { var locations = ["Anywhere", "Gurgaon", "Delhi", "Noida","Chennai"]; function split(val) { return val.split(/,\s*/); } function extractLast(term) { return split(term).pop(); } $("#txtLocation") // don't navigate away from the field on tab when selecting an item .WaterMark( { }) .bind("keydown", function (event) { if (event.keyCode === $.ui.keyCode.TAB && $(this).autocomplete("instance").menu.active) { event.preventDefault(); } }) .autocomplete({ delay: 0, minLength: 1, source: function (request, response) { // delegate back to autocomplete, but extract the last response($.ui.autocomplete.filter( locations, extractLast(request.term))); }, focus: function () { // prevent value inserted on focus return false; }, select: function (event, ui) { var terms = split(this.value); // remove the current input terms.pop(); // add the selected item terms.push(ui.item.value); // add placeholder to get the comma-and-space at the end terms.push(""); this.value = terms.join(", "); return false; } }); }); }); </script> <asp:TextBox ID="txtLocation" runat="server" CssClass="frmhometxtLocation" placeholder="Locations" ToolTip="Locations" onblur="Javascript:FormatLocation();"></asp:TextBox>

现在它工作正常:)我希望这很有用;)

答案 10 :(得分:4)

截至2017年10月。

解决了我的问题的解决方案。

目前,FB给出了这个惊喜。

  

... app的客户端OAuth设置。确保客户端和Web OAuth登录 ...

enter image description here

要调整的设置位于https://developers.facebook.com/apps/[your_app_itentifier]/fb-login/

尾随斜线很重要。它们必须与您的应用代码和FB管理设置匹配。所以这是代码中的某个配置(请参阅下面如何获取开发应用程序的任何域名):

{
    callbackURL: `http://my_local_app.com:3000/callback/`, // trailing slash
}

在这里

enter image description here

要在本地Windows计算机上获取应用程序的任何域名,请编辑host文件。自定义名称很好,以便摆脱所有localhost:80800.0.0.0:30303127.0.0.0:8000等等。因为某些第三方服务(如FB)有时无法让您使用127.0.0.0名称。

在Windows 10 hosts文件位于:

C:\Windows\System32\drivers\etc\hosts

备份初始文件,创建一个具有不同名称的副本(不能在本机Windows CMD中工作。我使用Git for Windows,它有许多Unix命令)

$ cp hosts hosts.bak

hosts

中添加此内容
127.0.0.1  myfbapp.com # you can access it in a browser http://myfbapp.com:3000
127.0.0.1  www.myotherapp.io # In a browser http://www.myotherapp.io:2020

例如,为了摆脱端口部分:3000设置NGINX。

答案 11 :(得分:4)

  

无法加载网址:此网址的域未包含在应用的   域。为了能够加载此URL,请添加所有域和子域   进入应用程序设置中的“应用程序域”字段。

我今天遇到了这个问题,至少可以说,我发现Facebook文档和SDK不尊重其他开发人员。

除了在两个不同的位置拥有“应用程序域”而没有太多信息(如果添加“网络”平台,则为3)之外,您还需要转到应用程序产品/ facebook登录名/设置有效的OAuth重定向URI

下添加重定向URL

该错误表明没有关于oauth设置的信息。

答案 12 :(得分:3)

在我更新我使用的SDK版本之前,没有什么对我有用。我从5.0开始。甚至5.4.0都不会起作用。当我更新到5.6.2时,尽管更改日志中没有任何相关信息,但它仍能完美运行!

答案 13 :(得分:2)

应在门户网站中启用此选项:

enter image description here

答案 14 :(得分:2)

Facebook最近停用了“使用严格模式重定向URI ”的切换按钮,因此您需要添加准确的URI,以便在您点击时调用的是什么登录按钮。对于我的情况,它是如截图所示。 它解决了我的问题:)

enter image description here

答案 15 :(得分:2)

如果这对其他人有帮助,那么当#34;有效的OAuth重定向URI&#34;时,我就会在旧网站上发生这种情况。成为强制性的该网站仍在使用V4 PHP SDK,通过升级到V5 SDK解决了我的问题。

答案 16 :(得分:2)

就我而言,我要做的只是启用 嵌入式浏览器OAuth登录

enter image description here

答案 17 :(得分:1)

在应用程序域部分中,您正在编写应用程序域,但您还需要添加登录域,即要求用户登录的html页面的名称。在我的情况下,我在localhost上测试它,登录路由是localhost / login,如果我只将http://localhost.com放在App域部分,我会收到此错误。但是在添加http://localhost/login.com之后,错误已得到修复。 此外,在较新版本的SDK中,应用程序设置已更改,其中没有OAuth重定向路由选项。在成功获取OAuth令牌后,您将直接从服务器端分配重定向路由。

答案 18 :(得分:1)

我遇到了同样的问题..... issu在PHP SDK 5.6.2版本中,并且此修复程序正在编辑以下文件:

facebook\src\Facebook\Helpers\FacebookRedirectLoginHelper.php

更改此行

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code']);

$redirectUrl = FacebookUrlManipulator::removeParamsFromUrl($redirectUrl,['state','code','enforce_https']);

答案 19 :(得分:1)

这对我有用:

以下是需要了解的主要内容:Facebook将始终检查“ WWW ”域名。因此,请确保 www.your_domain.dev 首先在您的浏览器上运行。

如果本地服务器上有多个虚拟主机,则其他虚拟主机可能会覆盖“ www.your_domain.dev ”。所以请检查一下。 Apache将选择域的第一个定义(或端口,或者这些术语中的某些东西 - 我不是这方面的专家,但是通过错误来学习)。 对此虚拟主机覆盖的简单快速修复是将“ www.your_domain.dev 虚拟主机定义放在文件的最顶层”httpd-vhosts.conf“。

转到“ /apache/conf/https-vhosts.conf ”并将其放在文件的最顶部:

<VirtualHost *:80>
<Directory "C:/your_app_folder_path/">
    Options FollowSymLinks Indexes
    AllowOverride All
    Order deny,allow
    allow from All
</Directory>
ServerName your_domain.dev
ServerAlias your_domain.dev
DocumentRoot "C:/your_app_folder_path/"
</VirtualHost>

###### FOR SSL #####
<VirtualHost *:443>
    DocumentRoot "C:/your_app_folder_path/"
    ServerName your_domain.dev
    ServerAlias www.your_domain.dev
    SSLEngine on
    SSLCertificateFile "conf/ssl.crt/server.crt"
    SSLCertificateKeyFile "conf/ssl.key/server.key"
    <Directory "C:/your_app_folder_path/">
        Options All
        AllowOverride All
        Require all granted 
    </Directory>
</VirtualHost>

下一步:如果您使用的是Windows系统,请在“C:\ Windows \ System32 \ drivers \ etc”中添加两行来编辑“hosts”文件:

127.0.0.1 your_domain.dev
127.0.0.1 www.your_domain.dev

下一步:重启Apache服务器,现在一切正常。

我希望这能帮到你,节省你的时间。 我浪费了差不多一整天的时间在网上搜索,并且在我找到这个之前找不到任何有用的东西。

答案 20 :(得分:0)

在Magento 2社交登录扩展中,您必须从面板中复制有效OAuth重定向URI,并在developer.facebook.com上“客户端OAuth设置”页面的“有效OAuth重定向URI”字段中添加链接。

答案 21 :(得分:0)

如果您的游戏没有服务器/站点(例如,如果您像我这样为Gameroom开发),请在“有效的OAuth重定向URI”中添加“ https://apps.facebook.com/xxxxxxxxxxxxxxxxx”(将您的应用ID替换为“ xxxxxxxxxxxx”)。 / p>

答案 22 :(得分:0)

就我而言,我解决了这个问题,方法是添加完整的 URL 而不仅仅是 facebook 要求的域。我希望他们将其重命名以进行更多说明。 所以有效的 OAuth 重定向 URI 应该是这样的:
之前https://www.mobile-battles.com
之后https://www.mobile-battles.com/register

答案 23 :(得分:0)

第一步: 使用所有https://example.in或ssl证书网址, 不要使用http://example.in

第二步: faceboook应用程序设置 - &gt;基本设置 - &gt;添加您的域或子域

第三步: faceboook应用程序登录设置 - &gt;有效的OAuth重定向URI-&gt;登录后添加所有重定向网址

第四步: faceboook应用程序设置 - &gt;高级设置 - &gt;域管理器 - &gt;添加您的域名

执行所有这一步,然后使用您的应用程序ID,应用程序版本,app secret进行设置

答案 24 :(得分:0)

Facebook登录 - &gt;设置 - &gt;有效的OAuth重定向URI - &gt;插入重定向网址的域名,请记住您应该添加&#39; https&#39;或http。 例如:如果你的重定向网址是 Basic Authentication Using Message Handlers In Web API ,你只需要输入 https://xxx.xxx.com/path/callback.do ,这对我来说没问题。

答案 25 :(得分:0)

当FB收紧登录程序时,问题和答案会不断变化。今天,我开始收到这条恐怖消息“此网址的域名未包含在应用的域中。要加载此网址,请将应用的所有域和子域添加到应用设置中的应用域名字段中。”

答案是:现在FB想要完全重定向uri。所以对于我来说,过去仅仅是https://www.example.com它现在需要https://www.example.com/auth/facebook/callback。这必须进入“有效OAuth重定向URI”字段(开发人员/ Facebook登录 - >设置)

答案 26 :(得分:0)

使用我自己的本地服务器。

只需将public class Functions { public static void GenerateSample( [QueueTrigger("audiosamplemaker")] AudioSampleEntityModel sampleInQueue, [Table("Samples", "{PartitionKey}", "{RowKey}")] AudioSampleEntityModel sampleInTable, [Blob("audiocollection/audio/{queueTrigger}")] CloudBlockBlob inputBlob, [Blob("audiocollection/samples/{queueTrigger}")] CloudBlockBlob outputBlob, TextWriter logger, [Table("Samples")] CloudTable tableBinding, TextWriter kek) { //use log.WriteLine() rather than Console.WriteLine() for trace output logger.WriteLine("GenerateSample() started..."); logger.WriteLine("Input blob is: " + sampleInQueue); // Open streams to blobs for reading and writing as appropriate. // Pass references to application specific methods using (Stream input = inputBlob.OpenRead()) using (Stream output = outputBlob.OpenWrite()) { createSample(input, output, 20); outputBlob.Properties.ContentType = "audio/mp3"; outputBlob.Metadata["Title"] = inputBlob.Metadata["Title"]; } logger.WriteLine("GenerateSample() completed..."); } private static void createSample(Stream input, Stream output, int duration) { using (var reader = new Mp3FileReader(input, wave => new NLayer.NAudioSupport.Mp3FrameDecompressor(wave))) { Mp3Frame frame; frame = reader.ReadNextFrame(); int frameTimeLength = (int)(frame.SampleCount / (double)frame.SampleRate * 1000.0); int framesRequired = (int)(duration / (double)frameTimeLength * 1000.0); int frameNumber = 0; while ((frame = reader.ReadNextFrame()) != null) { frameNumber++; if (frameNumber <= framesRequired) { output.Write(frame.RawData, 0, frame.RawData.Length); } else break; } } } } 作为网址添加到:

http://localhost/my-site

为我工作。

答案 27 :(得分:0)

在生产环境中,我发生了同样的Facebook错误。原因是我在Facebook(本地,制作)注册了2个应用程序,但我将本地应用程序ID硬编码到源代码中,并且在部署之前忘记将其切换为生产应用程序ID。

最佳做法决定您不应将应用程序ID硬编码到源代码中,但如果您这样做,请不要错误地将您的各种Facebook应用程序ID与我错误地匹配。

答案 28 :(得分:-1)

大多数答案都是将网址添加到应用的域中,但在公司工作时,您无法获得这些访问权限。对于这些,您可以通过简单地制作虚拟网络来绕过这一点。主持并进入主持人。

在主机文件(/ etc / hosts)中添加 127.0.0.1 www.your_domain.com

创建虚拟主机。我已将此用于apache虚拟主机

        ServerAdmin webmaster @ localhost         ServerName www.your_domain.com

    ProxyPass / http://localhost:5006/
    RewriteMap  lc int:tolower
    LogLevel debug