来自 Google 的 Oauth2 响应给出了 DotNetOpenAuth 400 错误请求
Oauth2 response from Google gives DotNetOpenAuth 400 bad request
我正在为 Google 使用 ServiceStack 设置 OAuth2。我在 web.config 中这样注册了 google:
<add key="oauth.GoogleOAuth.ConsumerKey" value="key"/>
<add key="oauth.GoogleOAuth.ConsumerSecret" value="secretkey"/>
<add key="oauth.GoogleOAuth.RedirectUrl" value="myurl/home"/>
<add key="oauth.GoogleOAuth.CallbackUrl" value="myurl.conm/auth/GoogleOAuth"/>
它在我的 Apphost 中注册为:
Plugins.Add(new AuthFeature(() => new CustomUserSession(),
new IAuthProvider[] {
new CredentialsAuthProvider(appSettings),
new FacebookAuthProvider(appSettings),
new TwitterAuthProvider(appSettings),
new BasicAuthProvider(appSettings),
new GoogleOAuth2Provider(appSettings),
}) { HtmlRedirect = null });
现在,当我去 /auth/GoogleOAuth
时,我会被重定向到 google,允许 google 使用我的东西,然后被重定向回我自己的 /auth/GoogleOAuth
,在那里我假设 ServiceStack 会处理我的麻烦,然后我收到以下错误:
Response Status
Error Code
WebException
Message
The remote server returned an error: (400) Bad Request.
Stack Trace
[Authenticate: 05/02/2015 09:30:42]: [REQUEST: {provider:GoogleOAuth,state:{thestate} }] System.Net.WebException: The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse() at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
我试着摆弄 redirectUrl
和 callbackUrl
但有些东西告诉我这是另一个问题。我以同样的方式使用 Twitter 和 Facebook 建立身份验证。
它崩溃的响应 url 是这样的:myurl/OpenAuthenticationTest/auth/GoogleOAuth?state={statenumber}&code={areallylongcode
有什么想法吗?
编辑:它似乎在错误之间切换:我有时也会遇到这个错误:
Unexpected OAuth authorization response received with callback and client state that does not match an expected value.
Edit2:我又测试了一些,结果发现同样的事情发生在 linkedIn 上,它也是 OAuth2
。所有 oauth1
工作正常。
原来是 url 中的一个问题,我指的是 google 和 google 中的问题。我在代理上安装了 IIS,因此我可以从外部访问它,但是 google 真的不喜欢这样。当我输入 http://localhost
作为我的 URL 时,一切正常。
我正在为 Google 使用 ServiceStack 设置 OAuth2。我在 web.config 中这样注册了 google:
<add key="oauth.GoogleOAuth.ConsumerKey" value="key"/>
<add key="oauth.GoogleOAuth.ConsumerSecret" value="secretkey"/>
<add key="oauth.GoogleOAuth.RedirectUrl" value="myurl/home"/>
<add key="oauth.GoogleOAuth.CallbackUrl" value="myurl.conm/auth/GoogleOAuth"/>
它在我的 Apphost 中注册为:
Plugins.Add(new AuthFeature(() => new CustomUserSession(),
new IAuthProvider[] {
new CredentialsAuthProvider(appSettings),
new FacebookAuthProvider(appSettings),
new TwitterAuthProvider(appSettings),
new BasicAuthProvider(appSettings),
new GoogleOAuth2Provider(appSettings),
}) { HtmlRedirect = null });
现在,当我去 /auth/GoogleOAuth
时,我会被重定向到 google,允许 google 使用我的东西,然后被重定向回我自己的 /auth/GoogleOAuth
,在那里我假设 ServiceStack 会处理我的麻烦,然后我收到以下错误:
Response Status
Error Code
WebException
Message
The remote server returned an error: (400) Bad Request.
Stack Trace
[Authenticate: 05/02/2015 09:30:42]: [REQUEST: {provider:GoogleOAuth,state:{thestate} }] System.Net.WebException: The remote server returned an error: (400) Bad Request. at System.Net.HttpWebRequest.GetResponse() at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
我试着摆弄 redirectUrl
和 callbackUrl
但有些东西告诉我这是另一个问题。我以同样的方式使用 Twitter 和 Facebook 建立身份验证。
它崩溃的响应 url 是这样的:myurl/OpenAuthenticationTest/auth/GoogleOAuth?state={statenumber}&code={areallylongcode
有什么想法吗?
编辑:它似乎在错误之间切换:我有时也会遇到这个错误:
Unexpected OAuth authorization response received with callback and client state that does not match an expected value.
Edit2:我又测试了一些,结果发现同样的事情发生在 linkedIn 上,它也是 OAuth2
。所有 oauth1
工作正常。
原来是 url 中的一个问题,我指的是 google 和 google 中的问题。我在代理上安装了 IIS,因此我可以从外部访问它,但是 google 真的不喜欢这样。当我输入 http://localhost
作为我的 URL 时,一切正常。