如何使用DotNetOpenAuth检索谷歌个人资料?

时间:2010-12-06 10:46:51

标签: dotnetopenauth google-openid

我正在尝试使用DNOA对我的应用程序进行OpenId支持,以便离开我目前使用的Janrain解决方案。问题是我到目前为止的用户都有基于个人资料的标识符(https://www.google.com/profiles/11223344556677 ...),而DNOA检索到的标识符的格式为https://www.google.com/accounts/o8/id?id=xxxxxyyyyyafgsdgfsdhg。< / p>

如何检索个人资料信息?通过属性交换?哪个属性?或者是否有其他API?我看到登录页面有谷歌提供商和谷歌个人档案的不同提供者,所以这里有人有答案...... :)

更新:Google个人资料的终端是(https://www.google.com/profiles/)

所以......现在的问题是如何获取谷歌个人资料ID号

2 个答案:

答案 0 :(得分:3)

通过“http://schemas.openid.net/ax/api/user_id”属性检索Google个人资料ID号。将其设置为必需

在DNOA中,

var fetch = new FetchRequest();

fetch.Attributes.AddRequired("http://axschema.org/contact/country/home");
fetch.Attributes.AddRequired("http://axschema.org/contact/email");
fetch.Attributes.AddRequired("http://axschema.org/namePerson/first");
fetch.Attributes.AddRequired("http://axschema.org/namePerson/last");
fetch.Attributes.AddRequired("http://axschema.org/pref/language");
fetch.Attributes.AddRequired("http://schemas.openid.net/ax/api/user_id");
有趣的是,如果我省略其中一些属性,我就不会得到api / user_id。 无法想出这一部分,但我现在并不在意。

答案 1 :(得分:0)

谷歌实际上有2个(可能更多)openid提供商 - 帐户和个人资料。我真的不知道为什么有2个但是所有Google帐户所有者都没有Google个人资料。

两者之间也存在很大差异。 Google个人资料openid标识符与您使用它的地方相同。 Google帐户ID不是!使用Google帐户作为OpenID提供程序登录时,您将获得每个域的不同ID。这是OpenID的一个新的(可选的,我认为)功能,但我现在不记得它的名字了。

尽管如此,我认为Google不会向您提供任何Google帐户标识符与哪些Google个人资料标识符相关的数据。

希望这会有所帮助。