加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

无法使用dotnetopenauth通过twitter进行身份验证

发布时间:2020-12-16 07:18:58 所属栏目:asp.Net 来源:网络整理
导读:嗨,我试图让我的网站用户能够使用Twitter登录.我想用localhost注册我的应用程序,以便我可以测试.由于twitter不接受这个,我将网址更改为127.0.0.1我也尝试添加端口号.我在AuthConfig文件中输入了我的秘密.当我点击推特按钮时,我收到了错误消息 远程服务器返回
嗨,我试图让我的网站用户能够使用Twitter登录.我想用localhost注册我的应用程序,以便我可以测试.由于twitter不接受这个,我将网址更改为127.0.0.1我也尝试添加端口号.我在AuthConfig文件中输入了我的秘密.当我点击推特按钮时,我收到了错误消息

远程服务器返回错误:(401)未经授权.

然后我开始在iis上运行我的应用程序来修复我的网站无法使用我的Windows Live帐户登录的问题(对该问题进行了排序)但我仍然收到此未经授权的错误.有人请帮忙.

谢谢

解决方法

我有完全相同的问题,无论我尝试什么,都无法用DotNetOpenAuth解决它.在使用DotNetOpenAuth时,Twitter的身份验证过程要比Facebook或Google更难实现.在经历了许多令人沮丧的时间之后,对数据的各个部分进行了不同的加密和编码,并且总是无益地使用401,我在混合中添加了 Tweetsharp并创建了自己的IAuthenticationClient用于Twitter身份验证.使用Tweetsharp执行身份验证非常简单.这成为一个相对微不足道的问题:

在您的TwitterClient构造函数中:

var twitterService = new TwitterService(consumerKey,consumerSecret);

在您的IAuthenticationClient实现中:

public void RequestAuthentication(HttpContextBase context,Uri returnUrl)
{
    var requestToken = twitterService.GetRequestToken(returnUrl.AbsoluteUri);
    var redirectUrl = twitterService.GetAuthorizationUri(requestToken).AbsoluteUri;
    context.Response.Redirect(redirectUrl,true);
}

public AuthenticationResult VerifyAuthentication(HttpContextBase context)
{
    var oAuthToken = context.Request.QueryString["oauth_token"];
    var oAuthVerifier = context.Request.QueryString["oauth_verifier"];
    var requestToken = new OAuthRequestToken { Token = oAuthToken };
    var accessToken = twitterService.GetAccessToken(requestToken,oAuthVerifier);
    twitterService.AuthenticateWith(accessToken.Token,accessToken.TokenSecret);
    var user = twitterService.VerifyCredentials();
    var userId = user.Id.ToString();
    var extraData = new Dictionary<string,string>
    {
        {"accesstoken",accessToken.Token},{"accesstokensecret",accessToken.TokenSecret},{"id",userId},{"name",user.Name},{"username",user.ScreenName},{"link",user.Url},};
    return new AuthenticationResult(true,ProviderName,userId,user.ScreenName,extraData);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读