googlecodesamples的以下链接正在运行。
注意:由于我只能有2个链接,所以我无法指向我的来源
问题stackover google-hybrid-openidoauth-login-not-prompting-for-oauth-access
和developers_google_com / accounts / docs / OpenID
https://accounts.google.com/o/openid2/auth?openid.ns=http://specs.openid.net/auth/2.0
&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://googlecodesamples.com/hybrid/index.php
&openid.realm=http://googlecodesamples.com&openid.mode=checkid_setup
&openid.ns.ui=http://specs.openid.net/extensions/ui/1.0
&openid.ns.ext1=http://openid.net/srv/ax/1.0
&openid.ext1.mode=fetch_request
&openid.ext1.type.email=http://axschema.org/contact/email
&openid.ext1.type.first=http://axschema.org/namePerson/first
&openid.ext1.type.last=http://axschema.org/namePerson/last
&openid.ext1.required=email,first,last
&openid.ns.oauth=http://specs.openid.net/extensions/oauth/1.0
&openid.oauth.consumer=googlecodesamples.com
&openid.oauth.scope=http://www.google.com/m8/feeds/
以上link
它会带您进行登录/确认并返回空白页面,但回复网址的正确如下:
http://googlecodesamples.com/hybrid/index.php?
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=2012-08-02T22:51:28ZNuhXnuA5P14fcg
openid.return_to=http://googlecodesamples.com/hybrid/index.php
openid.assoc_handle=AMlYA9XA_khrLenZI2mnUwkI1PWV-7ERMRXskVzs_nlFhq87rO0iowVL
openid.signed=op_endpoint,claimed_id,identity,return_to,response_nonce,
assoc_handle,ns.ext1,ns.ext2,ext1.mode,ext1.type.first,ext1.value.first,
ext1.type.email,ext1.value.email,ext1.type.last,ext1.value.last,ext2.scope,
ext2.request_token
openid.sig=JFoYU7PM4GoKBODmLyMtip5q7x4=
openid.identity=https://www.google.com/accounts/o8/id?id=AItOawlvAimmJ5_y6-gMro7Xyl75LXMC7jYCkiA
openid.claimed_id=https://www.google.com/accounts/o8/id?id=AItOawlvAimmJ5_y6-gMro7Xyl75LXMC7jYCkiA
openid.ns.ext1=http://openid.net/srv/ax/1.0
openid.ext1.mode=fetch_response
openid.ext1.type.first=http://axschema.org/namePerson/first
openid.ext1.value.first=nico
openid.ext1.type.email=http://axschema.org/contact/email
openid.ext1.value.email=nico.gtest@gmail.com
openid.ext1.type.last=http://axschema.org/namePerson/last
openid.ext1.value.last=gtest
openid.ns.ext2=http://specs.openid.net/extensions/oauth/1.0
openid.ext2.scope=http://www.google.com/m8/feeds/
openid.ext2.request_token=4/vAQqXlNILhAC0KCIBS2xlhtpo0IT.4lllxzFP7ncSgrKXntQAax2gXBbTcQI
其中重要的部分是回复中出现 openid.ext2.request_token 女巫
但如果我将链接更改为我的信息,则回复中没有任何oauth字段
https://accounts.google.com/o/openid2/auth?openid.ns=http://specs.openid.net/auth/2.0
&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://dev.oncrm.co.za:9004/gauthapp/myserv?test_v=verify_dbug
&openid.realm=http://dev.oncrm.co.za:9004
&openid.mode=checkid_setup
&openid.ns.ui=http://specs.openid.net/extensions/ui/1.0
&openid.ns.ext1=http://openid.net/srv/ax/1.0
&openid.ext1.mode=fetch_request
&openid.ext1.type.email=http://axschema.org/contact/email
&openid.ext1.type.first=http://axschema.org/namePerson/first
&openid.ext1.type.last=http://axschema.org/namePerson/last
&openid.ext1.required=email,first,last
&openid.ns.oauth=http://specs.openid.net/extensions/oauth/1.0
&openid.oauth.consumer=dev.oncrm.co.za:9004
&openid.oauth.scope=http://www.google.com/m8/feeds/
以上link
我已在google console
注册了我的域名创建了客户端ID和客户端密钥,未在任何样本的url中使用???
启用所有API服务
openid.realm == openid.oauth.consumer 与示例相同
openID部分有效,但无法让google返回 openid.ext2.request_token ,所以我可以继续请求access_token
我还使用了openid4java API(带有oauth扩展,问题110),在oauth上没有成功
问题
a)为什么我的链接不起作用,我还必须做什么
b)如果未使用客户端ID和客户端密码,那么它的概念是什么
c)参数:openid.ns.oauth = http://specs.openid.net/extensions/oauth/1.0 也是烦我的,是在oauth1.0或oauth2.0上工作的openID + OAuth
请感谢任何帮助
感谢nico
答案 0 :(得分:0)
我在文档中没有看到Google声明OpenId + OAuth可以与OAuth 2.0一起使用。他们所有的文档都指向1.0 OAuth,我没有看到谷歌的任何声明说它适用于2.0。
答案 1 :(得分:0)
正如Mark所说,你不能使用OAuth 2.0进行OpenID + OAuth,只能使用1.0。我认为1.0将适用于您要求的范围,如果它意味着为用户取消第二个授权步骤,则可能值得使用2.0以上。
假设1.0适用于您,我认为您的链接问题是您需要使用Google的“管理域名”工具(https://accounts.google.com/ManageDomains)注册您的域名,而不是API控制台。据我所知,API控制台专门用于OAuth 2.0。
假设我的预感是正确的,那回答(a)和(c),尽管是相反的顺序。至于(b),我认为客户端ID仅在OAuth 2.0中使用。存在于1.0和2.0中的客户机密钥用于签署对访问令牌的请求,您在收到请求令牌后执行此操作。因此,过程是:(1)获取请求令牌(可以作为OpenID身份验证的一部分完成),(2)访问令牌的交换请求令牌,(3)使用访问令牌来调用API。
希望这能回答你的问题,但如果没有,请告诉我(或者如果我在任何地方偏离基地)。我自己过去几天一直在和这些东西摔跤,并且有兴趣听听你的表现。
答案 2 :(得分:0)
我设法使用以下API和配置
a)使用(https://accounts.google.com/ManageDomains)设置域并使用(https://developers.google.com/gdata/docs/auth/oauth)创建和上传X.509证书
b)带有oauth扩展的API openid4java(问题110)
c)资源&样品
OAuthExample.java from gdata-samples.java-1.47.1
ConsumerServlet.java from openid4java
Sample.java from issue 110
d)使用 OAuthRsaSha1Signer 进行签名(来自a。上传X.509证书),然后OAuthHmacSha1Signer不需要oauthReqTokenSecret或accessTokenSecret
e)还需要使用ContactsService进行签名
对OAuth1的弃用仍有疑虑,如果等待openid与OAuth2合作不是更好
任何人都知道什么时候会是????