【问题标题】:cannot authenticate with twitter using dotnetopenauth无法使用 dotnetopenauth 通过 twitter 进行身份验证
【发布时间】:2013-01-23 18:18:16
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 我与这个项目无关,但它看起来是 DotNetOpenAuth (WorldDomination.Web.Authentication) 的一个不错的小替代品
  • 另外,为了回答您的问题,我们需要seez teh codez
  • 没有任何代码......好吧,在 auth 配置 OAuthWebSecurity.RegisterTwitterClient 中有 2 行

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


【解决方案1】:

我遇到了完全相同的问题,无论我尝试什么,都无法使用 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);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 你能分享你的代码吗?我正在指定回调 url,但仍然收到 {“远程服务器返回错误:(401) 未授权。”}
    • @leen3o 您好,我没有代码可以分享您在创建 mvc 项目时获得的标准内容。我建议你更新你的参考资料,当我第一次撞到墙上时,使用 nuget 帮助我
    猜你喜欢
    • 2011-06-25
    • 2011-08-04
    • 2012-04-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 2015-09-15
    相关资源
    最近更新 更多