今天,我试图将我的令牌身份验证集成到我网站的其他部分,但是当我测试代码时,它没有工作。我知道它以前起作用了,而且我对它没有任何改变,所以发生了什么?
除了推特,我的Facebook和LinkedIn认证代码也有同样的问题,这两个女巫之前也都很好吗?
从一开始,我就进入了Tweetinvi:https://github.com/linvi/tweetinvi/wiki/Authentication的wiki页面,并复制了代码,并进行了测试和调试。
首先,我遇到了ValidateTwitterAuth ActionResult中(token =新的ActionResult)为null的问题,但我修复了该指令的工作原理。但接下来的问题是,ITwitterCredentials userCreds是null,我不知道为什么?
我该怎么解决这个问题?造成此问题的原因是否与阻止其他令牌处理程序工作的原因相同?
我的守则:
(家庭财务总监的部分)
(我确实删除了应用程序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");
}提前感谢
发布于 2017-01-07 01:48:49
您的问题来自以下几个方面:
var token = new AuthenticationToken()
{
AuthorizationKey = "APP-ID",
AuthorizationSecret = "APP-SECRET",
};AuthorizationKey和AuthorizationSecret不是APP_ID和APP_SECRET。
您应该从在您的_authenticationContext中创建的ActionResult TwitterAuth()中获取这些信息。
有多种存储此信息的方法,以便您可以在回调完成时访问该信息。
如果不使用负载平衡,我建议使用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-application-considerations。
https://stackoverflow.com/questions/41507714
复制相似问题