来自Google的Oauth2回复给DotNetOpenAuth 400提出了错误请求

时间:2015-02-05 09:44:19

标签: c# oauth servicestack dotnetopenauth

我正在使用ServiceStack for Google设置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我被重定向到谷歌,允许谷歌使用我的东西,重定向回我自己的/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)

我试图摆弄redirectUrlcallbackUrl,但有些事情告诉我这是另一个问题。我以同样的方式使用twitter和facebook构建身份验证。

它崩溃的响应网址是这样的: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:我进行了更多测试,结果发现linkIn完全相同,也是OAuth2。 AL oauth1工作正常。

1 个答案:

答案 0 :(得分:1)

原来这是一个问题,我指的是谷歌和谷歌的网址。我在代理上安装了IIS,所以我可以从外部访问它,但谷歌真的不喜欢它。当我输入http://localhost作为我的网址时,一切正常。