c# - 使用 DotNetOpenAuth 获取数据?

标签 c# visual-studio-2010 .net-4.0 google-api dotnetopenauth

我已经实现了 this simple code as described here (与 2010 年相比,网络表单)

protected void Page_Load(object sender, EventArgs e)
{
  var openid = new OpenIdRelyingParty();
  var response = openid.GetResponse();

  if (response != null && response.Status == AuthenticationStatus.Authenticated)
  {
    FormsAuthentication.RedirectFromLoginPage(response.ClaimedIdentifier, false);
  }
}

点击函数:

protected void btnGoogle_Click(object sender, ImageClickEventArgs e)
{
  using (OpenIdRelyingParty openid = new OpenIdRelyingParty())
  {
    var request = openid.CreateRequest("https://www.google.com/accounts/o8/id");
    request.RedirectToProvider();
  }
}

问题 #1

当我点击登录(通过谷歌)时,它会打开 this consent screen :

enter image description here

但它是如何工作的?我以为我必须创建一个 API key在谷歌开发者控制台中,以允许人们登录。 (就像我在这里对 myne 的其他应用所做的那样->)

enter image description here

显然我没有创建任何localhost”应用程序。那么它如何仍然有效? (这也是我从互联网上下载的演示)。

问题 #2

一旦我有a result :

enter image description here

如何获取用户数据? (例如电子邮件){这篇文章没有提到它}

nb DotNetOpenAuth 版本 3.4.6.10357

最佳答案

该行之所以有效,是因为它使用了 openId而不是 OAuth2。打开id之前是old school Oauth2 .

您还应该注意:

Important: Google has deprecated OpenID 2.0 and will shut it down after a migration period. If your app uses OpenID 2.0, the userinfo endpoint, or OAuth 2.0 login (early version), you should migrate your app by the deadlines given in the migration timetable.

因为 OpenId 已经折旧并且将在 2015 年 4 月 20 日之前关闭,所以我不建议使用它进行开发。

要回答请求不需要客户端 ID 的问题,因为它是打开的而不是 Oauth2,只有 oauth2 需要客户端 ID。

推荐:Google APIs Client Library 教程:Google Oauth2 C#

关于c# - 使用 DotNetOpenAuth 获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23977700/

相关文章:

c# - .NET 迭代器来包装抛出的 API

c# - 如何在代码中设置控件模板?

c# - .Net 4.0 C# - 在没有手动循环的情况下添加到集合

c# - Entity Framework : Illegal characters in path.(连接字符串)(MVC3)

c# - 如何在代码隐藏中从 Application.Resources 访问命名资源?

c# - 我怎样才能让 Selenium-WebDriver 在发送 key 后等待几秒钟?

asp.net - 防止在开发时缓存 javascript 和 css

c# - Visual 2010 中的 C# Windows 窗体中是否有转发器控件?还是另一种选择?

c# - .NET 实例化错误

asp.net-mvc - 托管到服务器时任务或线程不工作/运行