如何在我的网站上使用OpenID + OAuth?

时间:2011-01-04 13:52:34

标签: php oauth openid

我想通过谷歌帐户登录我的网站,现在我可以使用谷歌帐户登录(通过OpenID),但我不知道如何在谷歌获取用户帐户和信息? 就像下面的链接(由谷歌提供)

http://googlecodesamples.com/hybrid/

此链接可以通过用户的谷歌帐户登录,并列出用户的谷歌文档中的所有文档,所以我猜通过使用OAuth可以让我获取用户的帐户(如example@gmail.com)并获取相关信息,但我不知道怎么办?

PS。我用php写我的网站

2 个答案:

答案 0 :(得分:0)

我不能为你编写整个代码,但我会试着给你一个如何完成它的概述。

示例请求网址:

https://www.google.com/accounts/o8/id
?openid.ns=http://specs.openid.net/auth/2.0
&openid.ns.pape=http://specs.openid.net/extensions/pape/1.0
&openid.ns.max_auth_age=300
&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select
&openid.identity=http://specs.openid.net/auth/2.0/identifier_select
&openid.return_to=http://www.example.com/checkauth
&openid.realm=http://www.example.com/
&openid.assoc_handle=ABSmpf6DNMw
&openid.mode=checkid_setup
&openid.ui.ns=http://specs.openid.net/extensions/ui/1.0
&openid.ui.mode=popup
&openid.ui.icon=true
&openid.ns.ax=http://openid.net/srv/ax/1.0
&openid.ax.mode=fetch_request
&openid.ax.type.email=http://axschema.org/contact/email
&openid.ax.type.language=http://axschema.org/pref/language
&openid.ax.required=email,language 

然后,您应该收到此响应网址作为您需要拦截的重定向:

http://www.example.com/checkauth
?openid.ns=http://specs.openid.net/auth/2.0 
&openid.mode=id_res
&openid.op_endpoint=https://www.google.com/accounts/o8/ud
&openid.response_nonce=2008-09-18T04:14:41Zt6shNlcz-MBdaw
&openid.return_to=http://www.example.com:8080/checkauth
&openid.assoc_handle=ABSmpf6DNMw
&openid.signed=op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle
&openid.sig=s/gfiWSVLBQcmkjvsKvbIShczH2NOisjzBLZOsfizkI=     &openid.identity=https://www.google.com/accounts/o8/id/id=ACyQatixLeLODscWvwqsCXWQ2sa3RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U
&openid.claimed_id=https://www.google.com/accounts/o8/id/id=ACyQatixLeLODscWvwqsCXWQ2sa3RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U 

获得该网址后,您就完成了所有设置!希望这会有所帮助。

答案 1 :(得分:0)

您可能希望使用现有的身份验证解决方案,而不是重新发明轮子:-) 由于您未指定所使用的服务器脚本语言,例如对于PHP,请看一下:

http://opauth.org/

这很容易实现,不仅支持谷歌帐户,还支持许多其他帐户。 它还会提取您感兴趣的一些帐户信息。

...或google之类的“openID身份验证框架”或“oauth框架”: - )