很难理解除了登录之外如何使用Oauth或OWIN。我创建了一个MVC Web应用程序。我可以让用户使用他们的Yahoo ID(而不是本地ID)登录我的应用程序就好了。这是使用Owin.Security.Providers.Yahoo
完成的我也可以使用DevDefinedOauth进行API调用,这是一段代码片段:
public ActionResult Test2(string oauth_token, string oauth_verifier)
{
if(String.IsNullOrEmpty(oauth_token))
{
oauthButton_Click();
}
else
{
OAuthSession session = (OAuthSession)Session["oAuthSession"];
IToken requestToken = (IToken)Session["oAuthToken"];
if (!String.IsNullOrEmpty(oauth_verifier))
{
IToken accessToken = session.ExchangeRequestTokenForAccessToken(requestToken, oauth_verifier);
Session["oAuthSession"] = session;
}
}
IConsumerRequest playerData = ((OAuthSession)Session["oAuthSession"]).Request().Get().ForUrl("http://fantasysports.yahooapis.com/fantasy/v2/game/371/players");
var xml = playerData.ToDocument();
我的问题是我想要消除使用DevDefinedOauth(如果可能)并仅使用Owin.Security.Providers.Yahoo
我找不到有关如何使用Owin执行此操作的任何文档。可能吗?我注意到我可以尝试这样的东西,但它没有结果:
var token = new Owin.Security.Providers.Yahoo.Messages.AccessToken();
string test = token.Token;
如果您使用facebook和Oauth,我会阅读有关如何获取访问令牌的帖子,但相同的代码对Yahoo不起作用。我不确定是否需要将某些内容添加到我的启动类或我的帐户控制器操作(如下)。
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
// Sign in the user with this external login provider if the user already has a login
var user = await UserManager.FindAsync(loginInfo.Login);
if (user != null)
{
await SignInAsync(user, isPersistent: false);
//var client = new Owin.Security.Providers.Yahoo.
return RedirectToLocal(returnUrl);
}
else
{
// If the user does not have an account, then prompt the user to create an account
ViewBag.ReturnUrl = returnUrl;
ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
return View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel { UserName = loginInfo.DefaultUserName });
}
}
正如你所看到的,如果你看看我的其他帖子,我有点失落。我觉得我非常接近答案但是找不到它。第一种情况我可以使用Owin Providers登录,然后使用DevDefinedOauth进行API调用,但似乎很多额外的代码(和使用)都没有。如果有人有任何想法,请告诉我....