【问题标题】:DotNetOpenAuth for previously authorized siteDotNetOpenAuth 用于先前授权的站点
【发布时间】:2010-06-18 07:36:40
【问题描述】:

我在 DotNetOpenAuth 进行 3 条腿授权方面非常幸运。目前,我正在连接并提取一些 Google 数据。

我的问题是,如果您已经将我的网络应用程序授权给您的 Google 帐户,那么当我致电时

var accessTokenResponse = google.ProcessUserAuthorization();

它基本上什么都不做。如何获取已经验证了我的应用程序的帐户的令牌?我没有看到任何类型的回调。

我将这归咎于我对 OAuth 的一般无知。

【问题讨论】:

    标签: .net oauth dotnetopenauth


    【解决方案1】:

    您必须将 DotNetOpenAuth 中包含的示例 InMemoryTokenManager 替换为您自己的 IConsumerTokenManager 实现,该实现将访问令牌和机密存储在您的数据库中。然后将该接口的实例传递给WebConsumer 类,它将接收所有传入的令牌和机密。

    无论是在调用ProcessUserAuthorization 时还是在您的令牌管理器类中,您还必须将您保存的访问令牌与当前登录到您网站的用户的用户帐户相关联。

    然后,当用户下次访问您的网站时,您在数据库中查找他们的用户帐户以获取他们的访问令牌。您将其用于将来的请求。您的IConsumerTokenManager 将根据需要提供相关的令牌秘密,生活会很美好。

    【讨论】:

    • 不要 ping 一个旧线程,但我没有意识到 InMemoryTokenManager 是一个打算被替换的示例。这可能解释了我自己对令牌机密的 OAuth 实现的一些困惑。谢谢!
    • InMemoryTokenManager 示例中植入了一个简单的蛋,如果从示例中取出并在其他地方使用,它应该会故意破坏构建,并显示错误告诉您构建自己的。 @JHubSharp 对你的情况不起作用吗?
    • 没有。事实上,当 SimpleConsumerTokenManager 中断时,它对我来说工作得很好,因为它不会保留访问令牌的秘密。如果您能对我的问题提供一些见解,我会很高兴:stackoverflow.com/questions/12485117/…
    猜你喜欢
    • 2014-05-05
    • 2012-10-01
    • 1970-01-01
    • 2011-10-17
    • 2012-05-14
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多