Actions on google Google操作:帐户链接向令牌URL发送GET请求

Actions on google Google操作:帐户链接向令牌URL发送GET请求,actions-on-google,Actions On Google,我对Google Actions的帐户链接有一些问题: 我已经实现了Google文档中描述的OAuth2步骤。我已经实现了我的OAuth2服务器,并通过Postman对其进行了测试,并且能够获得预期的访问令牌 如果我尝试通过将服务添加到我的帐户来从Google Home应用程序进行身份验证,我会被带到我的授权表单中,授权工作正常,并按照预期使用授权代码响应Google的重定向URI。然而,谷歌返回URI说“账户链接失败”,然后我在谷歌主页应用程序中收到一条消息:“无法更新设置。”。检查您的连接

我对Google Actions的帐户链接有一些问题:

我已经实现了Google文档中描述的OAuth2步骤。我已经实现了我的OAuth2服务器,并通过Postman对其进行了测试,并且能够获得预期的访问令牌

如果我尝试通过将服务添加到我的帐户来从Google Home应用程序进行身份验证,我会被带到我的授权表单中,授权工作正常,并按照预期使用授权代码响应Google的重定向URI。然而,谷歌返回URI说“账户链接失败”,然后我在谷歌主页应用程序中收到一条消息:“无法更新设置。”。检查您的连接

我从我的令牌URL脚本日志中看到的另一件奇怪的事情是:我可以看到从Google到我的令牌URL的传入GET请求,而不是带有Google文档中提到的所需数据的POST请求。因此,即使出现“帐户链接失败”的消息,谷歌似乎在调用我的令牌URL,但使用的是GET而不是POST

以下是对令牌URL的请求日志:

来自邮递员测试软件的请求>确定

__SERVER
Array
(
    [USER] => www-data
    [HOME] => /var/www
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_ACCEPT] => */*
    [HTTP_USER_AGENT] => PostmanRuntime/7.6.1
    [HTTP_POSTMAN_TOKEN] => f85664e2-7d38-4511-9519-cddda3feec06
    [HTTP_CACHE_CONTROL] => no-cache
    [HTTP_CONTENT_TYPE] => application/x-www-form-urlencoded
    [HTTP_CONTENT_LENGTH] => 145
    [HTTP_CONNECTION] => close
    [HTTP_HOST] => 127.0.0.1
    [REDIRECT_STATUS] => 200
    [SERVER_NAME] => _
    [SERVER_PORT] => 80
    [SERVER_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 38622
    [REMOTE_ADDR] => 127.0.0.1
    [SERVER_SOFTWARE] => nginx/1.12.2
    [GATEWAY_INTERFACE] => CGI/1.1
    [REQUEST_SCHEME] => http
    [SERVER_PROTOCOL] => HTTP/1.0
    [DOCUMENT_ROOT] => [******]
    [DOCUMENT_URI] => /google/token/index.php
    [REQUEST_URI] => /google/token/
    [SCRIPT_NAME] => /google/token/index.php
    [CONTENT_LENGTH] => 145
    [CONTENT_TYPE] => application/x-www-form-urlencoded
    [REQUEST_METHOD] => POST
    [QUERY_STRING] =>
    [SCRIPT_FILENAME] => [******]
    [FCGI_ROLE] => RESPONDER
    [PHP_SELF] => /google/token/index.php
    [REQUEST_TIME_FLOAT] => 1553765980.9273
    [REQUEST_TIME] => 1553765980
)
__POST
Array
(
    [client_id] => [******]
    [client_secret] => [******]
    [grant_type] => authorization_code
    [code] => [******]
)
在智能手机上使用GOOGLE HOME APP进行测试时收到请求>不正常

__SERVER
Array
(
    [USER] => www-data
    [HOME] => /var/www
    [HTTP_ACCEPT_ENCODING] => gzip,deflate,br
    [HTTP_USER_AGENT] => OpenAuth
    [HTTP_CONTENT_TYPE] => application/x-www-form-urlencoded
    [HTTP_CONNECTION] => close
    [HTTP_HOST] => 127.0.0.1
    [REDIRECT_STATUS] => 200
    [SERVER_NAME] => _
    [SERVER_PORT] => 80
    [SERVER_ADDR] => 127.0.0.1
    [REMOTE_PORT] => 46184
    [REMOTE_ADDR] => 127.0.0.1
    [SERVER_SOFTWARE] => nginx/1.12.2
    [GATEWAY_INTERFACE] => CGI/1.1
    [REQUEST_SCHEME] => http
    [SERVER_PROTOCOL] => HTTP/1.0
    [DOCUMENT_ROOT] => [******]
    [DOCUMENT_URI] => /google/token/index.php
    [REQUEST_URI] => /google/token/
    [SCRIPT_NAME] => /google/token/index.php
    [CONTENT_LENGTH] =>
    [CONTENT_TYPE] => application/x-www-form-urlencoded
    [REQUEST_METHOD] => GET
    [QUERY_STRING] =>
    [SCRIPT_FILENAME] => [******]
    [FCGI_ROLE] => RESPONDER
    [PHP_SELF] => /google/token/index.php
    [REQUEST_TIME_FLOAT] => 1553767309.7797
    [REQUEST_TIME] => 1553767309
)
__REQUEST
Array
(
)
__POST
Array
(
)
__GET
Array
(
)
-------------------------
__ANSWER
400: invalid grant

问题似乎是由于在没有POST值的情况下重定向/to/index.php引起的


通过将操作控制台中的我的URL更改为/index.php修复了此问题,现在链接工作正常。

koenvi欢迎使用。请阅读以在帮助中心询问一个好问题。包括您的代码、屏幕截图或布局文件和logcat。这将帮助您获得更快的响应。在这里发布问题之前,请遵循“如何提问”指南:如果您的问题不符合“如何提问”指南,您可以尝试初学者编程论坛和小组,这些论坛和小组将更好地帮助您。如果你的代码有精确的技术问题,那么就把它贴在上面。如果您不遵循SO问题指导原则,您的问题可能会被否决或关闭,没有任何收获或回应。你可以编辑你的问题并改进它。出于几个原因,这看起来很奇怪。如果可能的话,我建议更新你的问题,这在其他方面是很好的,不管之前的评论者在操作控制台的屏幕截图上说了什么,你已经配置了帐户链接,屏蔽了任何敏感信息和来自GET的日志,这些信息再次针对你的令牌URL发生,屏蔽特定的敏感信息。如果您可以从auth-exchange从浏览器或服务器获取日志,那也很好。