我想在 Laravel8 上使用 Socialite 对 Twitter 进行身份验证,但它在本地工作,但在 Heroku 上出现错误

问题描述

我想在 Laravel 8 中实现 Twitter 身份验证。
我正在使用社交名媛。
本地操作检查成功。
我通过 Twitter 进行了身份验证并能够获得该名称
当我部署到 Heroku 时,出现错误
Heroku 的环境变量(TWITTER_KEY、TWITTER_REDIRECT_URI、TWITTER_SECRET)已设置。

heroku run composer show -i

laravel / socialite 和 socialiteproviders/twitter 和 socialiteproviders/manager 已上传到 heroku。

[状态] 从 Laravel8 应用程序启动 Twitter 身份验证时出错。

League\OAuth1\Client\Signature\HmacSha1Signature::League\OAuth1\Client\Signature\{closure}(): Argument #2 ($value) must be passed by reference,value given

[环境] 赫鲁库 Laravel8 索西莱特
我英语不好,但我会尽力的。谢谢。

解决方法

此错误已在此处解决:https://github.com/thephpleague/oauth1-client/issues/127 我要求发布新版本。因此,您要么等待新版本,要么(暂时)需要包含错误修复的最新开发版本:

composer require league/oauth1-client:dev-master
,

我只想分享我想出的另一个解决方案。由于该错误仅发生在 PHP 8 上,您也可以将 Composer 要求更改为不使用 PHP 8(如果您没有依赖于该版本的要求)。

要更改它,您可以编辑您的 composer.json 文件并更改此行:

    "require": {
        "php": "^7.3|^8.0",

为此:

    "require": {
        "php": "^7.3",

然后运行composer update。希望对遇到此问题的其他人有用