C# oauth_problem=token_刷新雅虎时被拒绝';OAuth访问令牌

C# oauth_problem=token_刷新雅虎时被拒绝';OAuth访问令牌,c#,oauth,yahoo-api,C#,Oauth,Yahoo Api,我已经用Hammock完成了Oauth,我成功地获得了访问令牌、访问令牌机密和会话句柄,但现在我必须在令牌过期时获得 我已经按照指令进行了操作,我尝试使用urldecode和不使用urldecode传递访问令牌,但我无法获得令牌,我获得了 oauth_问题=令牌_被拒绝 更新: 这是我的密码: ##呼叫## var AccessTokenQuery=OAuthUtil.GetAccessTokenQueryRenewal(accessToken,会话句柄,accessTokenSecret);

我已经用Hammock完成了Oauth,我成功地获得了访问令牌、访问令牌机密和会话句柄,但现在我必须在令牌过期时获得

我已经按照指令进行了操作,我尝试使用urldecode和不使用urldecode传递访问令牌,但我无法获得令牌,我获得了

oauth_问题=令牌_被拒绝

更新:

这是我的密码:

##呼叫##
var AccessTokenQuery=OAuthUtil.GetAccessTokenQueryRenewal(accessToken,会话句柄,accessTokenSecret);
AccessTokenQuery.RequestAsync(AppSettings.AccessTokenUri,null);
AccessTokenQuery.QueryResponse+=新事件处理程序(AccessTokenQuery\u QueryResponse);
内部静态OAuthWebQuery GetAccessTokenQueryRenewal(字符串oauth\u令牌、字符串会话\u句柄、字符串oauth\u令牌\u秘密)
{
var oauth=新的OAuthWorkflow
{
AccessTokenUrl=AppSettings.AccessTokenUri,
ConsumerKey=AppSettings.ConsumerKey,
ConsumerCret=AppSettings.ConsumerKeyCret,
SignatureMethod=OAuthSignatureMethod.HmacSha1,
ParameterHandling=OAuthParameterHandling.HttpAuthorizationHeader,
TokenSecret=oauth_token_secret,
令牌=oauth_令牌,
会话句柄=会话句柄,
Version=AppSettings.oAuthVersion
};
var info=oauth.BuildAccessTokenInfo(WebMethod.Post);
var objOAuthWebQuery=新的OAuthWebQuery(info,false);
objOAuthWebQuery.HasElevatedPermissions=true;
objOAuthWebQuery.SilverlightUserAgentHeader=“Hammock”;
返回objOAuthWebQuery;
}
void AccessTokenQuery_QueryResponse(对象发送方,WebQueryResponseeEventargs e)
{
尝试
{
StreamReader=新的StreamReader(即响应);
string strResponse=reader.ReadToEnd();
var parameters=MainUtil.GetQueryParameters(strResponse);
accessToken=参数[“oauth_令牌”];
accessTokenSecret=参数[“oauth_token_secret”];
session_handle=参数[“oauth_session_handle”];
MainUtil.SetKeyValue(“AccessToken”,AccessToken);
MainUtil.SetKeyValue(“AccessTokenSecret”,AccessTokenSecret);
MainUtil.SetKeyValue(“会话句柄”,会话句柄);
userLoggedIn();
}
捕获(例外情况除外)
{
Dispatcher.BeginInvoke(()=>
{
MessageBox.Show(例如Message);
});
}
}

您可以尝试的快速可能性:您说您“尝试使用urldecode传递访问令牌”。你试过使用urlencode吗?Urldecode用于解码从web调用返回的URL,编码是在传递到web调用之前所做的事情

另外,请注意,Oauth的编码方案与.NET默认编码中使用的编码方案略有不同。不过,您可以轻松编写自己的编码例程,有关详细信息,请查看oauth规范

例:


你需要显示你的代码我用代码编辑过!你有解决办法吗?如果是这样的话,为什么不把它贴在这里来帮助其他有同样问题的人呢?嗨,马可,我没有找到解决办法。。。我尝试了一些获得“刷新访问令牌”的方法,但没有结果!你有什么建议吗?
            ##the call##
            var AccessTokenQuery = OAuthUtil.GetAccessTokenQueryRenewal(accessToken, session_handle, accessTokenSecret);
            AccessTokenQuery.RequestAsync(AppSettings.AccessTokenUri, null);
            AccessTokenQuery.QueryResponse += new EventHandler<WebQueryResponseEventArgs>(AccessTokenQuery_QueryResponse); 
     internal static OAuthWebQuery GetAccessTokenQueryRenewal(string oauth_token,string session_handle, string oauth_token_secret)               
    {
        var oauth = new OAuthWorkflow
        {
            AccessTokenUrl = AppSettings.AccessTokenUri,
            ConsumerKey = AppSettings.consumerKey,
            ConsumerSecret = AppSettings.consumerKeySecret,
            SignatureMethod = OAuthSignatureMethod.HmacSha1,         
            ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
            TokenSecret = oauth_token_secret,
            Token = oauth_token,               
            SessionHandle = session_handle,
            Version = AppSettings.oAuthVersion
        };
        var info = oauth.BuildAccessTokenInfo(WebMethod.Post);
        var objOAuthWebQuery = new OAuthWebQuery(info, false);           
        objOAuthWebQuery.HasElevatedPermissions = true;
        objOAuthWebQuery.SilverlightUserAgentHeader = "Hammock";
        return objOAuthWebQuery;
    }

 void AccessTokenQuery_QueryResponse(object sender, WebQueryResponseEventArgs e)
    {
        try
        {
            StreamReader reader = new StreamReader(e.Response);
            string strResponse = reader.ReadToEnd();
            var parameters = MainUtil.GetQueryParameters(strResponse);
            accessToken = parameters["oauth_token"];
            accessTokenSecret = parameters["oauth_token_secret"];
            session_handle = parameters["oauth_session_handle"];

            MainUtil.SetKeyValue<string>("AccessToken", accessToken);
            MainUtil.SetKeyValue<string>("AccessTokenSecret", accessTokenSecret);
            MainUtil.SetKeyValue<string>("SessionHandle", session_handle);


            userLoggedIn();
        }
        catch (Exception ex)
        {
            Dispatcher.BeginInvoke(() =>
            {
                MessageBox.Show(ex.Message);
            });
        }
    }
    private string UrlEncode(string value)
    {
        string unreserved = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.~";
        StringBuilder result = new StringBuilder();

        foreach (char symbol in value)
        {
            if (unreserved.IndexOf(symbol) != -1)
                result.Append(symbol);
            else
                result.Append('%' + String.Format("{0:X2}", (int)symbol));
        }

        return result.ToString();
    }