我遇到了一个真正恼人的问题。我在一个虚拟盒子里做了一些Laravel试验,现在我觉得我的应用程序已经准备好在我的服务器上运行了。因此,我将整个项目上传到我的服务器,并授予存储和bootstrap / cache文件夹的权限。
我正在使用Socialite for Twitch来验证用户身份。我在.env文件中添加了所有必需的东西,如(密钥,秘密和新的重定向网址),我还在我的抽搐应用程序设置中更改了重定向网址。无论出于何种原因,我都无法再登录了。我总是得到以下错误。
(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文件中的重定向url和twitch设置中的重定向url更改回虚拟盒ip,登录再次正常工作。我不知道为什么它在那里完美无瑕,但在我调整服务器的设置时却没有。
可能它与“SESSION_DOMAIN”环境有关。
我将那个改为:
SESSION_DOMAIN=http://example.com
它仍然出现相同的错误,因此我将重定向网址更改为:
TWITCH_REDIRECT_URI=http://1.2.3.4/twitch/callback
并且还改变了twitch api网站本身的URL。之后我尝试了,我得到了与我的实时制作网络服务器相同的错误。所以我从.env中完全删除了SESSION_DOMAIN,它开始在我的虚拟盒子上再次运行。不知何故,这似乎与会话有关。仍然不知道为什么我的虚拟盒上的完全相同的克隆工作完美,而它在我的实时网络服务器上没有工作,尽管代码完全相同,唯一的区别是我必须为每个设置调整的重定向网址。
没有人知道吗?
最佳
最好的汤姆
答案 0 :(得分:0)
答案 1 :(得分:0)
出于某种原因,似乎查询字符串未在我的实时环境中传递。我将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 redirect url + twich api site本身)
+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小时了,虽然我发现了这个细节,但仍然无法弄明白。
答案 2 :(得分:0)
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参数。