【问题标题】:Laravel Socialite broken after moving from local environmentLaravel 社交名流从当地环境搬走后破碎
【发布时间】:2017-06-02 12:55:21
【问题描述】:

我遇到了一个真正烦人的问题。我在一个虚拟盒子里对 Laravel 做了一些试验,现在我觉得我的应用程序已经准备好在我的服务器上运行了。因此,我将整个项目上传到了我的服务器,并授予了存储和引导/缓存文件夹的权限。

我正在使用 Socialite for Twitch 对用户进行身份验证。我在 .env 文件中添加了所有必需的东西,比如(密钥、秘密和新的重定向 url),我还在我的 twitch 应用程序设置中更改了重定向 url。无论出于何种原因,我都无法再登录了。我总是收到以下错误。

(1|1) InvalidStateException
in AbstractProvider.php (line 32)
at AbstractProvider->user()
in TwitchAuthController.php (line 34)
at TwitchAuthController->handleProviderCallback()
at call_user_func_array(array(object(TwitchAuthController), 'handleProviderCallback'), array())
in Controller.php (line 55)

TwitchAuthController.php 第 34 行看起来像这样,这就是所有坏事开始发生的地方;P

$user = Socialite::driver('twitch')->user();

我的虚拟盒子上仍然有该项目,我从那里开发它并将其与我的“真实”服务器同步,因此这意味着两个项目(虚拟盒子和服务器)完全相同。一旦我将 .env 文件和 twitch 设置中的重定向 url 更改回虚拟框 ip,登录就可以再次正常工作。我不知道为什么它在那里完美无瑕,但在我调整服务器设置时却不行。

可能与“SESSION_DOMAIN”环境有关。

我把那个改成:

SESSION_DOMAIN=http://example.com

还是出现同样的错误,所以我将重定向 URL 改回:

TWITCH_REDIRECT_URI=http://1.2.3.4/twitch/callback

并且还更改了 twitch api 网站本身的 URL。之后我尝试了,我得到了与我的实时生产网络服务器相同的错误。所以我从 .env 中完全删除了 SESSION_DOMAIN ,它又开始在我的虚拟盒子上工作了。我猜这似乎与会话有关。仍然不知道为什么我的虚拟盒子上完全相同的克隆可以完美地工作,而它不能在我的实时网络服务器上工作,尽管代码完全相同,唯一的区别是我必须为每个设置调整的重定向 url。

没人知道吗?

最好的

最好的汤姆

【问题讨论】:

    标签: php laravel-5.4 laravel-socialite


    【解决方案1】:

    我认为问题在于您没有在 Twitch 应用程序配置中更改重定向 URL,请检查此图像。

    【讨论】:

    • 嗨,我做到了。这就是我所说的“......也改变了 twitch api 网站本身的 URL。”
    【解决方案2】:

    由于某种原因,查询字符串似乎没有在我的实时环境中传递。我将 Request 添加到我的回调处理程序并使用dd($request 打印结果。

    第一个示例是当我将设置(.env 文件 twitch 重定向 url + twich api 站点本身)调整为我的虚拟框的 ip,其中 1 个克隆现在正在运行。

    +server: ServerBag {#42 ▼
        #parameters: array:35 [▼
          "USER" => "www-data"
          "HOME" => "/var/www"
          "HTTP_COOKIE" => "XSRF-TOKEN=blahhhblaaaaah ▶"
          "HTTP_ACCEPT_LANGUAGE" => "en-US,en;q=0.8"
          "HTTP_ACCEPT_ENCODING" => "gzip, deflate, sdch"
          "HTTP_REFERER" => "http://1.1.1.1/"
          "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
          "HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
          "HTTP_UPGRADE_INSECURE_REQUESTS" => "1"
          "HTTP_CONNECTION" => "keep-alive"
          "HTTP_HOST" => "1.1.1.1"
          "REDIRECT_STATUS" => "200"
          "SERVER_NAME" => "_"
          "SERVER_PORT" => "80"
          "SERVER_ADDR" => "192.168.1.10"
          "REMOTE_PORT" => "65268"
          "REMOTE_ADDR" => "1.1.1.1"
          "SERVER_SOFTWARE" => "nginx/1.10.0"
          "GATEWAY_INTERFACE" => "CGI/1.1"
          "REQUEST_SCHEME" => "http"
          "SERVER_PROTOCOL" => "HTTP/1.1"
          "DOCUMENT_ROOT" => "/home/tom/site/public"
          "DOCUMENT_URI" => "/index.php"
          "REQUEST_URI" => "/twitch/callback?code=somecode12345&scope=user_read+user_subscriptions&state=somestate121411"
          "SCRIPT_NAME" => "/index.php"
          "CONTENT_LENGTH" => ""
          "CONTENT_TYPE" => ""
          "REQUEST_METHOD" => "GET"
          "QUERY_STRING" => "code=somecode12345&scope=user_read+user_subscriptions&state=somestate121411"
          "SCRIPT_FILENAME" => "/home/tom/site/public/index.php"
          "PATH_INFO" => ""
          "FCGI_ROLE" => "RESPONDER"
          "PHP_SELF" => "/index.php"
          "REQUEST_TIME_FLOAT" => 1496424273.7195
          "REQUEST_TIME" => 1496424273
        ]
    

    这是结果,当我更改服务器上实时环境的 url 设置时((.env 文件 twitch 重定向 url + twich api 站点本身)

    +server: ServerBag {#42 ▼
        #parameters: array:35 [▼
          "USER" => "www-data"
          "HOME" => "/var/www"
          "HTTP_COOKIE" => "sometoken17414115 ▶"
          "HTTP_ACCEPT_LANGUAGE" => "en-US,en;q=0.8"
          "HTTP_ACCEPT_ENCODING" => "gzip, deflate, sdch"
          "HTTP_REFERER" => "http://example.com/"
          "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
          "HTTP_USER_AGENT" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
          "HTTP_UPGRADE_INSECURE_REQUESTS" => "1"
          "HTTP_CONNECTION" => "keep-alive"
          "HTTP_HOST" => "example.com"
          "REDIRECT_STATUS" => "200"
          "SERVER_NAME" => "example.com"
          "SERVER_PORT" => "80"
          "SERVER_ADDR" => "3.3.3.3"
          "REMOTE_PORT" => "51008"
          "REMOTE_ADDR" => "9.9.9.9"
          "SERVER_SOFTWARE" => "nginx/1.10.0"
          "GATEWAY_INTERFACE" => "CGI/1.1"
          "REQUEST_SCHEME" => "http"
          "SERVER_PROTOCOL" => "HTTP/1.1"
          "DOCUMENT_ROOT" => "/var/www/site/public"
          "DOCUMENT_URI" => "/index.php"
          "REQUEST_URI" => "/twitch/callback?code=somecode12345&scope=user_read+user_subscriptions&state=somestate121411"
          "SCRIPT_NAME" => "/index.php"
          "CONTENT_LENGTH" => ""
          "CONTENT_TYPE" => ""
          "REQUEST_METHOD" => "GET"
          "QUERY_STRING" => ""
          "SCRIPT_FILENAME" => "/var/www/site/public/index.php"
          "PATH_INFO" => ""
          "FCGI_ROLE" => "RESPONDER"
          "PHP_SELF" => ""
          "REQUEST_TIME_FLOAT" => 1496425556.5687
          "REQUEST_TIME" => 1496425556
        ]
    

    我可以在这个结果中看到两个不同之处。首先QUERY_STRING 是空的,尽管我得到这个结果的地址看起来像这样:

    http://example.com/twitch/callback?code=n60im8s9c7cmvffn705jwzjbtx76ea&scope=user_read+user_subscriptions&state=8AcRvwvRcupj6lrJmYYvM6Q70A9OZEBRIRGXiQxb
    

    PHP_SELF 也是空的,而在我的工作示例中(在虚拟盒子系统上)显示 index.php 作为结果。

    我现在几乎被困了 24 小时,即使我找到了这些细节,我仍然无法弄清楚。

    【讨论】:

      【解决方案3】:

      哇,我真傻。在过去的 24 小时里,我浪费了无数个小时,因为我认为这与从本地环境迁移到我的服务器有关。起初我在考虑权限/会话问题或其他问题。在对上一小时发现的 QUERY_STRING 问题进行了一些研究后,我再次检查了我的网络服务器配置。原来我只是傻。尽管我可以发誓我只是从我的开发环境中复制了 nginx php-fpm 设置,但错误就在那里。

      try_files $uri $uri/ /index.php$query_string; # Looked like this
      try_files $uri $uri/ /index.php?$query_string; # Should have been this...
      

      所以这一切只是一个简单的问号缺失......我现在感觉很糟糕。

      仍然想知道为什么其他一切都运行良好,例如新闻、编辑新闻等等。我坚持所有这一切也是使用 QUERY_STRING 参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-08-20
        • 1970-01-01
        • 2020-07-16
        • 2021-02-10
        • 2016-09-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多