Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用DotNetOpenAuth google的c#.net应用程序_C#_Oauth_Dotnetopenauth_Google Oauth - Fatal编程技术网

使用DotNetOpenAuth google的c#.net应用程序

使用DotNetOpenAuth google的c#.net应用程序,c#,oauth,dotnetopenauth,google-oauth,C#,Oauth,Dotnetopenauth,Google Oauth,我已经成功地通过了Google OAuth API的身份验证。这是它第一次正常运行。对于第二次访问相同的文件,我得到以下错误: “发送直接消息或获取响应时出错。” 堆栈跟踪: [WebException: The remote server returned an error: (400) Bad Request.] System.Net.HttpWebRequest.GetResponse() +6038435 DotNetOpenAuth.Messaging.Standa

我已经成功地通过了Google OAuth API的身份验证。这是它第一次正常运行。对于第二次访问相同的文件,我得到以下错误:

“发送直接消息或获取响应时出错。”

堆栈跟踪:

    [WebException: The remote server returned an error: (400) Bad Request.]
   System.Net.HttpWebRequest.GetResponse() +6038435
   DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options) +410

[ProtocolException: Error occurred while sending a direct message or getting the response.]
   DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options) +1618
   DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request) +73
   DotNetOpenAuth.Messaging.Channel.GetDirectResponse(HttpWebRequest webRequest) +82
   DotNetOpenAuth.Messaging.Channel.RequestCore(IDirectedProtocolMessage request) +357
   DotNetOpenAuth.Messaging.Channel.Request(IDirectedProtocolMessage requestMessage) +158
   DotNetOpenAuth.OAuth2.ClientBase.UpdateAuthorizationWithResponse(IAuthorizationState authorizationState, EndUserAuthorizationSuccessAuthCodeResponse authorizationSuccess) +319
   DotNetOpenAuth.OAuth2.WebServerClient.ProcessUserAuthorization(HttpRequestInfo request) +885
对于方法

private IAuthorizationState GetAuthorization(WebServerClient client)
{
    String accesstoken = "";

    IAuthorizationState state = AuthState;

    if (state != null)
    {
        return state;
    }

    state = client.ProcessUserAuthorization(new HttpRequestInfo(HttpContext.Current.Request));        

    if (state != null && (!string.IsNullOrEmpty(state.AccessToken) 
        || !string.IsNullOrEmpty(state.RefreshToken)))
    {
        accesstoken = state.AccessToken;
        HttpContext.Current.Session["AUTH_STATE"] = _state = state;      
        return null;
    }

    string scope = TasksService.Scopes.TasksReadonly.GetStringValue();
    OutgoingWebResponse response = client.PrepareRequestUserAuthorization(new[] { 
            scope, 
            "https://www.googleapis.com/auth/userinfo.profile", 
            "https://www.googleapis.com/auth/userinfo.email" 
        });

    response.Send();
    return null;
}

private IAuthorizationState AuthState
{
    get
    {
        return _state ?? HttpContext.Current.Session["AUTH_STATE"] as IAuthorizationState;
    }
}
排队

 state = client.ProcessUserAuthorization(new HttpRequestInfo(HttpContext.Current.Request));

等待有价值的回复和评论

请检查您是否只调用了client.ProcessUserAuthorization一次。从使用相同参数的第二次呼叫开始,可能会出现“发送直接消息或获得响应”错误。

我也遇到同样的问题。有没有人可以给我们提供建议?@Deepak.agrawal try replace state=client.ProcessUserAuthorization();代替state=client.ProcessUserAuthorization(newhttprequestInfo(HttpContext.Current.Request));