(Tweetinvi) - AuthFlow.CreateCredentialsFromVerifierCode(ver



今天我试图将我的令牌身份验证与我网站的其他部分集成,但当我测试代码时,它不起作用。我知道它以前有效,我没有改变任何事情,所以发生了什么?

除了推特,我在脸书和领英认证的代码上也遇到了同样的问题,这两个witch以前也都很好用???

从一开始我就去了Tweetinvi的wiki页面:https://github.com/linvi/tweetinvi/wiki/Authentication我复制了代码测试和调试它。

首先,我遇到ValidateTwitterAuth ActionResult中的(token=new AuthenticationToken)为null的问题,但我按照有效的指令解决了这个问题。但接下来的问题是ITwitterCredentials userCredsnull,我不知道为什么?

我该怎么解决这个问题?这个问题的原因是否与阻止我的其他令牌处理程序工作的原因相同?

我的代码:

(家庭控制器的一部分)

(我确实删除了应用程序id和应用程序机密,但我检查了这些,所以它们不是问题所在)

private IAuthenticationContext _authenticationContext;
// Step 1 : Redirect user to go on Twitter.com to authenticate
public ActionResult TwitterAuth()
{
var appCreds = new ConsumerCredentials("APP-ID", "APP-SECRET");
// Specify the url you want the user to be redirected to
var redirectURL = "http://" + Request.Url.Authority +"/Home/ValidateTwitterAuth";
_authenticationContext = AuthFlow.InitAuthentication(appCreds, redirectURL);
return new RedirectResult(_authenticationContext.AuthorizationURL);
}

public ActionResult ValidateTwitterAuth()
{
var token = new AuthenticationToken()
{
AuthorizationKey = "APP-ID",
AuthorizationSecret = "APP-SECRET",
ConsumerCredentials = new ConsumerCredentials("APP-ID", "APP-SECRET")
};

// Get some information back from the URL
var verifierCode = Request.Params.Get("oauth_verifier");
// Create the user credentials
ITwitterCredentials userCreds = AuthFlow.CreateCredentialsFromVerifierCode(verifierCode, token);
// Do whatever you want with the user now!
ViewBag.User = Tweetinvi.User.GetAuthenticatedUser(userCreds);

string access_token = userCreds.AccessToken;
string access_token_secret = userCreds.AccessTokenSecret;

return RedirectToAction("Index", "Home");
}

提前感谢

您的问题来自以下方面:

var token = new AuthenticationToken()
{
AuthorizationKey = "APP-ID",
AuthorizationSecret = "APP-SECRET",
};

AuthorizationKeyAuthorizationSecret不是APP_IDAPP_SECRET

您应该从ActionResult TwitterAuth()中创建的_authenticationContext中获取这些信息。

有多种方法可以存储这些信息,以便在回调完成时可以访问这些信息。

如果你没有使用负载平衡,我建议使用以下使用url参数的代码:

public ActionResult TwitterAuth()
{
var appCreds = new ConsumerCredentials(MyCredentials.CONSUMER_KEY, MyCredentials.CONSUMER_SECRET);
var redirectURL = "http://" + Request.Url.Authority + "/Home/ValidateTwitterAuth";
var authenticationContext = AuthFlow.InitAuthentication(appCreds, redirectURL);
return new RedirectResult(authenticationContext.AuthorizationURL);
}
public ActionResult ValidateTwitterAuth()
{
var verifierCode = Request.Params.Get("oauth_verifier");
var authorizationId = Request.Params.Get("authorization_id");
if (verifierCode != null)
{
var userCreds = AuthFlow.CreateCredentialsFromVerifierCode(verifierCode, authorizationId);
var user = Tweetinvi.User.GetAuthenticatedUser(userCreds);
ViewBag.User = user;
}
return View();
}

你可以在这里阅读更多关于这个主题的信息:https://github.com/linvi/tweetinvi/wiki/Authentication#web-应用注意事项。

相关内容

  • 没有找到相关文章

最新更新