如何在类库中使用重定向(url)方法?

Posted

技术标签:

【中文标题】如何在类库中使用重定向(url)方法?【英文标题】:How to use redirect (url) method in a class library? 【发布时间】:2014-04-05 02:01:48 【问题描述】:

我正在尝试构建一个使用调查猴子 API 方法来显示数据的网站,为此我正在构建一个类库,我将在其中调用一个(仅来自某个控制器的一个)方法,该方法应该执行用户。(我在调查猴子网站中提到的 3 步过程成功)但现在我只想从控制器调用一个方法到类库中的一个方法,该方法将执行用户的 oauth 并设置可以稍后用于 API 方法。我的代码在类库中是这样的:

HttpContext.Current.Response.Redirect(urlToAuthorize);

//what should be here (I should wait till the user gives credentials and authorize so that I can get the query string)

string tempAuthCode = HttpContext.Current.Session["code"].ToString();
if (!verifyRedirectedTempCode(tempAuthCode))

    return "Not a valid Token";

else

    try
    
        var webRequest = GetWebRequestForHttpPostOfSurveyMonkeyToken(ApiKey,ClientSecret,tempAuthCode,RedirectUri,ClientId,GrantType,ContentType,WebRequestMethod);
        using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
        
            string tokenJson = new StreamReader(response.GetResponseStream()).ReadToEnd();
            AccessToken accesstokenObj = JsonConvert.DeserializeObject<AccessToken>(tokenJson);
            return accesstokenObj.Token.ToString();
        
    
    catch
    
        return null;
    

重定向后它不等待用户授权。所以,它并没有像我想的那样工作。如何等到用户授权并收集此查询字符串?它应该在类库本身中完成。

【问题讨论】:

【参考方案1】:

你不能这样处理。 OAuth 是一个两阶段的过程。您重定向到 OAuth 提供者,然后一旦用户在那里授权,他们就会重定向回您的站点,您从中断的地方开始。

这意味着您需要 两个 操作:一个用于启动流程,另一个用于在授权后从提供程序接收负载。

【讨论】:

以上是关于如何在类库中使用重定向(url)方法?的主要内容,如果未能解决你的问题,请参考以下文章

JSP如何实现网页重定向

如何做nginx的重定向

如何使用 ajax jQuery 重定向指定重定向 url

servlet如何重定向

如何使用 Python 获取重定向的 URL

如何在java中重定向到外部URL