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

时间:2013-01-23 18:18:16

标签: twitter asp.net-mvc-4 dotnetopenauth

您好我正在尝试为我的网站用户提供使用Twitter登录的功能。我想用localhost注册我的应用程序,以便我可以测试。由于twitter不接受这个,我将网址更改为127.0.0.1我也尝试添加端口号。我在AuthConfig文件中输入了我的秘密。当我点击推特按钮时,我收到错误

The remote server returned an error: (401) Unauthorized.

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

谢谢

2 个答案:

答案 0 :(得分:4)

我遇到了完全相同的问题,无论我尝试了什么,都无法使用DotNetOpenAuth解决问题。在使用DotNetOpenAuth时,Twitter的身份验证过程要比Facebook或Google+更难实现。在经历了许多令人沮丧的时间之后,对数据的各个部分进行了不同的加密和编码,并且总是无益地使用401,我将Tweetsharp添加到混合中并为Twitter身份验证创建了自己的IAuthenticationClient。使用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);
}

答案 1 :(得分:4)

嗨原来这是配置问题。我需要指定一个回调网址。我把它设置为与我的网站相同

相关问题