我正在尝试通过OAuth2连接到Google。我正在使用在另一个应用程序中运行的代码,所以我很确定问题出在Google的配置中。
我在Google控制台中注册了一个客户端ID和密钥,我将其添加到授权配置中:
var client = new GoogleOAuth2Client("[client id].apps.googleusercontent.com", "[secret key]");
var extraData = new Dictionary<string, object>();
OAuthWebSecurity.RegisterClient(client, "Google", extraData);
不幸的是,当我按下按钮进行连接时,我收到以下错误:
- 这是一个错误。
醇>
错误:invalid_request
redirect_uri的参数值无效:缺少权限:
file:/// Account / ExternalLoginCallback%3FReturnUrl = /
请求详细信息
scope = https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis.com/auth/userinfo.email
RESPONSE_TYPE =代码
REDIRECT_URI =文件:///帐户/ ExternalLoginCallback%3FReturnUrl = /
状态= 提供商 =谷歌&安培;的 SID = [号码] client_id = [客户端ID] .apps.googleuserconte
我已尝试将/etc/hosts
文件中的localhost参数更改为其他基本网址,并且已添加这些位置以重定向Google控制台中的URI,如下所示:
http://localhost:8080/Account/ExternalLoginCallback%3FReturnUrl=/
http://localhost.example.com:8080/Account/ExternalLoginCallback
http://localhost.example.com:8080/Account/ExternalLoginCallback%3FReturnUrl=/
错误仍然存在。我不知道问题是什么,我希望有人可以给我一些指导。感谢
答案 0 :(得分:9)
在按下连接按钮时发送给Google的授权请求中redirect_uri
参数的值必须设置为您在Google API控制台中为您的客户注册的值之一。所以不要传递:
file:///Account/ExternalLoginCallback%3FReturnUrl=/
你应该通过例如。
http://localhost:8080/Account/ExternalLoginCallback%3FReturnUrl=/
但正确地进行了URL编码:
http%3A%2F%2Flocalhost%3A8080%2FAccount%2FExternalLoginCallback%253FReturnUrl%3D%2F