首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Tweetinvi) - AuthFlow.CreateCredentialsFromVerifierCode(verifierCode,令牌;返回null

(Tweetinvi) - AuthFlow.CreateCredentialsFromVerifierCode(verifierCode,令牌;返回null
EN

Stack Overflow用户
提问于 2017-01-06 14:22:36
回答 1查看 773关注 0票数 0

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

除了推特,我的Facebook和LinkedIn认证代码也有同样的问题,这两个女巫之前也都很好吗?

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

首先,我遇到了ValidateTwitterAuth ActionResult中(token =新的ActionResult)为null的问题,但我修复了该指令的工作原理。但接下来的问题是,ITwitterCredentials userCredsnull,我不知道为什么?

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

我的守则:

(家庭财务总监的部分)

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

代码语言:javascript
复制
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");
}

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-07 01:48:49

您的问题来自以下几个方面:

代码语言:javascript
复制
var token = new AuthenticationToken()
{
    AuthorizationKey = "APP-ID",
    AuthorizationSecret = "APP-SECRET",
};

AuthorizationKeyAuthorizationSecret不是APP_IDAPP_SECRET

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

有多种存储此信息的方法,以便您可以在回调完成时访问该信息。

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

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41507714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档