4

嗨,我正在尝试让我的网站的用户能够使用 twitter 登录。我想用 localhost 注册我的应用程序,以便我可以测试。由于 twitter 不接受这一点,我将 url 更改为 127.0.0.1 我还尝试添加端口号。我在 AuthConfig 文件中输入了我的秘密。当我点击 twitter 按钮时,我得到了错误

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

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

谢谢

4

2 回答 2

4

DotNetOpenAuth我遇到了完全相同的问题,无论我尝试什么都无法解决。与 Facebook 或 Google+ 相比,Twitter 的身份验证过程更难正确使用DotNetOpenAuth。经过许多令人沮丧的时间,对数据的各个部分进行不同次数的加密和编码,并且总是在未经授权的情况下得到无用的 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);
}
于 2013-02-03T19:32:10.890 回答
4

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

于 2013-02-10T13:54:23.900 回答