我正在尝试构建一个使用调查猴子API方法来显示数据的网站,因为我正在构建一个类库,我将在其中调用一个(只有一个来自某个控制器)方法,该方法应该执行oauth用户。(我在调查猴网站上提到的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;
}
}
}
重定向后不等待用户授权。所以,它不能像我想的那样工作。如何等到用户授权并收集此查询字符串?它应该在类库中完成。
答案 0 :(得分:3)
你无法像这样处理它。 OAuth是一个两阶段的过程。您重定向到OAuth提供商,然后一旦用户在那里进行授权,他们就会重定向回您的网站,从那里您从中断的地方继续。
这意味着您需要两个操作:一个用于启动进程,另一个用于在授权后从提供程序接收有效内容。