Symfony3 Facebook 登录 - redirect_uri URL 转换为相对地址

2024-02-07

我正在尝试为网络应用程序实现 facebook 登录。 这是 FacebookConnect.php

<?php
namespace Vendor\GiftBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Routing\Generator\UrlGenerator;

class FacebookConnectController extends Controller
{
    /**
     * @Route("/connect/facebook", name="connect_facebook")
     */
    public function connectFacebookAction(Request $request)
    {

        // redirect to Facebook
        $redir = $this->generateUrl('connect_facebook_check', array(), UrlGeneratorInterface::ABSOLUTE_URL);
        $facebookOAuthProvider = $this->get('app.facebook_provider');
        $url = $facebookOAuthProvider->getAuthorizationUrl([
            // these are actually the default scopes
            'scopes' => ['public_profile', 'email'],
            'redirect_uri' => [$redir],
        ]);
        return $this->redirect($url);
    }
    /**
     * @Route("/connect/facebook-check", name="connect_facebook_check")
     */
    public function connectFacebookActionCheck()
    {
        // will not be reached!
    }
}

当我点击触发 connectFacebookAction 函数的按钮时,我收到 FB 错误redirect_uri URL 必须是绝对的。就像它忽略了我在参数中给他的绝对 URL 一样。

我究竟做错了什么?

编辑:应用程序的授权 URL 在任何情况下都会发生变化还是保持不变?在我弄清楚如何解决这个问题之前,我可以将其硬编码吗?

EDIT2:我明白为什么 URL 是相对的而不是绝对的。 这是我的服务配置:

services:
    app.facebook_provider:
        class: League\OAuth2\Client\Provider\Facebook
        arguments:
            -
                clientId: %facebook_app_id%
                clientSecret: %facebook_app_secret%
                graphApiVersion: v2.8
                redirectUri: "@=service('router').generate('connect_facebook_check', {}, true)"

如何从服务中的路由生成绝对 URL?


您使用的是 league/oauth2-client 的 1.x 版本吗(您可以检查composer.lock)?那忽略 getAuthorizationUrl 中的redirect_uri https://github.com/thephpleague/oauth2-client/blob/1.4.2/src/Provider/AbstractProvider.php#L360并使用您在构造函数中传递的那个。如果您使用的是该版本,请将 app.facebook_provider 的定义更改为

redirectUri: "@=service('router').generate('connect_facebook_check', {}, 0)"

注意 0 而不是 true。UrlGeneratorInterface 常量在 2.8 中已更改 https://github.com/symfony/symfony/blob/2.8/src/Symfony/Component/Routing/Generator/UrlGeneratorInterface.php#L37.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony3 Facebook 登录 - redirect_uri URL 转换为相对地址 的相关文章

  • 如何检查号码是否是巴基斯坦用户的手机号码而不是固定电话号码

    我所做的是从开头删除 92 或 0092 并使用以下代码检查它是否是巴基斯坦人的有效手机号码 if preg match 3 0 4 0 9 number 1 Pakistani mobile number else not a pakis
  • 使用 md5 加密的 PHP 和 Mysql 查询出现问题

    我使用普通的 php mysql 插入查询并使用 md5 加密密码 这是插入查询 sql mysql query INSERT INTO user username password role approved values usernam
  • 从 FilterControllerEvent 监听器重定向到另一个 Symfony 路由

    我正在尝试设置一个 kernel controller 侦听器 以便在函数返回 true 时重定向到另一个路由 我有可用的路线 但无法使用此路线设置控制器 event gt setController 我收到以下错误 FilterContr
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 关于加拿大短信网关提供商的建议[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很好奇 如果我能够接受传入的短信到某个号码 然后将其传递给 PHP 中的服务器端应用程序 会带来多少麻烦 金钱 我最终会通过电子邮件地址发回短信 有
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • strlen()==0 和empty()之间有区别吗?

    我正在查看其他人编写的一些表单验证代码 我看到了这个 strlen 0 当测试表单变量是否为空时 我使用empty 功能 一种方法比另一种方法更好吗 它们在功能上等效吗 strlen是获取字符串中的字符数 同时empty用于测试变量是否为空
  • php 如何统计文件夹中的文件数量?

    我想让用户能够在自己的文件夹中上传一些文件 图片 但只有当该文件夹包含的图片少于五张时才可能 如果已经有 5 张图片 脚本必须让用户知道他 她的文件夹已满 所以 我想知道php中是否有函数可以计算文件夹中的文件数量 或者 php 中有其他方
  • 使用 php 更改白天和黑夜的背景?

    我正在制作一个 tumblr 页面 我的 html 页面有两种不同的背景 我希望白天背景从早上 7 点到晚上 8 点显示 夜间背景从晚上 8 点到早上 7 点显示 我决定用 php 来做这件事 但对于 php 来说我是个新手 我的朋友给我发
  • 将函数中的会话变量传递给 codeigniter 中的助手

    这就是我正在尝试做的事情 这是控制器中的功能 public function get started if test login this gt session gt all userdata this gt load gt view te
  • Composer 用于下载私有 GitHub 存储库

    我无法使用 Composer 下载 github 私人存储库 php composer phar update 我收到以下错误 The https api github com repos company private1 https ap
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • Android GCM 服务器的 API 密钥

    我有点困惑我应该为 GCM 服务器使用哪个 API 密钥 在文档中它说使用 android api 密钥 这对我不起作用并且总是给出未经授权的 http developer android com google gcm gs html ht
  • 如何编写在正文中包含锚标记的 Zend Framework URL?

    使用 Zend Framework 中设置的标准 MVC 我希望能够显示始终具有锚点的页面 现在我只是在 phtml 文件中添加一个带有 anchor 的无意义参数
  • 使用 DOJO 自动完成文本框

    我正在寻找一种使用 DOJO 进行文本框自动建议的简单方法 我将查询的数据库表 使用 PHP 脚本 以 JSON 形式返回 有超过 100 000 条记录 因此这确实不应该采用 FilteringSelect 或 ComboBox 的形式
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri

随机推荐

  • 关机还是不关机?在ExecutorService(Java8)中

    我试图了解执行程序服务相对于关闭的行为 文档说 除非有 shutdown 调用 否则应用程序不会终止 但在这个简单的示例中 它会在一分钟后精确退出 任何想法 Runnable r new Runnable Override public v
  • 调整阈值cros_val_score sklearn

    有没有办法设置sklearn的cross val score阈值 我训练了一个模型 然后将阈值调整为 0 22 型号如下 Try with Threshold pred proba LGBM Model predict proba X te
  • Python 3 Windows 服务仅在调试模式下启动

    我首先在中发布了答案这个帖子 https stackoverflow com questions 42586805 python 3 windows service 但不符合论坛标准 我希望这次的回答符合论坛标准 这段代码应该更加清晰易读
  • 当参数未显式传递时,默认使用 lambda 进行用户输入

    我写了下面的代码 仍然想知道它的用途 https codereview stackexchange com questions 242702 how effective is it to default to user input in c
  • Visual Studio 在调试时跳到每隔一行

    我现在尝试单步执行代码 Visual Studio 会跳过所有其他行 我知道它是每隔一个 因为当我有一个 ForEach 循环时 它会碰到在以后的迭代中跳过的行 Visual Studio 是否有任何逻辑原因跳过其他行 UPDATE 我添加
  • 如何迭代 Array.prototype 函数

    我想将所有数组函数包装在数组对象中 但在控制台中 gt gt gt Array prototype gt gt gt prototype undefined 但是当我输入时Array prototype在控制台中它显示自动完成中的所有功能
  • System.Diagnostics.Trace.WriteLine 的结果在哪里?

    在我的代码中 我使用以下命令编写了一些跟踪消息System Diagnostics Trace WriteLine 但是我可以从哪里获取消息呢 我查看了事件查看器 但没有找到它们 Are you debugging Look at the
  • 将 Google Maps JS API ImageMapType 剪辑为多边形

    如何将 Google 地图中的 MapType 剪辑为任意多边形 例如 如果我有一个自定义图像映射类型 https developers google com maps documentation javascript maptypes I
  • Typescript:调用另一个类的“方法”

    我对 java type script 很陌生 在理解它们的概念时遇到了一些困难 我想打电话给method另一个班级的 然而 到目前为止我还没有成功 export class Foo calcSomeThing parameter numb
  • 如何仅使用 javascript 更改 onclick 按钮颜色?

    我试图使用 onclick 和 getElementsByClassName 更改按钮的颜色 并想出了这样的结果 HTML
  • Android 2.3 Webview 中的希伯来字体

    我正在将一个显示希伯来语的应用程序移植到 Android 2 3 2 3 模拟器在 TextView 中正确显示字符串 但是当我尝试将字符串放入 WebView 中时 WebView 只显示乱码 这告诉我希伯来语字体在模拟器中可用 但 we
  • 执行更新时存储过程失败

    我正在使用 PHP 的 SQL Server 驱动程序连接到 SQL Server 2008 Express 现在 我正在尝试用存储过程替换所有 SELECT UPDATE 和 INSERT 语句 这对于只包含 SELECT 语句的 SP
  • 将 Ninject 2.0 与 ASP .Net 3.5 结合使用

    我正在尝试将 Ninject 2 0 与 Asp Net 3 5 Web 应用程序一起使用 以下是 DLLS 及其我正在使用的版本 Ninject dll v2 0 0 0 Ninject Extensions Logging dll v2
  • 对象作为 python 字典中的键

    我试图使用一个对象作为 python 字典中的键 但它的行为方式我不太理解 首先 我创建一个以我的对象为键的字典 package disseminators ContentType application zip http other pr
  • 如何知道下次夏令时调整时钟的时间?

    我很好奇 是否有任何方法可以找出下一次夏令时调整发生时的 UTC 日期 时间 类似于 Windows 报告的内容 参见圆圈 此信息在 Windows 中由 EnumDynamicTimeZoneInformation 函数提供 See ht
  • 从 DataRow 获取值之间的区别

    示例代码 DataTable table new DataTable insert column to table table Columns Add name insert value to table foreach DataRow r
  • 如何处理语义分割中未知类的平均交集(mIOU)?

    我实现了一个 FCN 网络来进行语义分割 我使用 Cityscapes 作为我的数据集 如您所知 Cityscapes 中有一些您在训练过程中忽略的类 它们被标记为 255 我使用加权损失来忽略未知类的损失 将未知类的损失设置为零 现在我想
  • DrawerNavigator 在点击每个选项时始终显示选项卡栏

    我试图拥有一个选项卡栏 并且每个选项卡栏都有自己的堆栈导航器 我拥有的三个选项卡是 家 轮廓 设置 我也想在抽屉里展示这三个选项 我创建了一个抽屉 但只有点击主页才会显示选项卡栏 我想显示选项卡栏 就像您按下个人资料选项卡一样 选项卡栏仍保
  • click() 带有链接

    我有一个页面 其中有一些链接 都是这样的 a href class answer item 10 a 我想使用click 函数来模拟用户点击其中一个 但它在我的测试中似乎不起作用 Evaluate a mathematical expres
  • Symfony3 Facebook 登录 - redirect_uri URL 转换为相对地址

    我正在尝试为网络应用程序实现 facebook 登录 这是 FacebookConnect php