0

来自 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/

以上链接

它会将您带到登录/确认并返回一个空白页面,但回复的 url 是正确的,如下所示:

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/

以上链接

我已经在谷歌控制台注册了我的域名

创建了一个客户端 ID 和客户端密码,女巫没有用于任何示例的 url 中???

开启所有 API 服务

openid.realm == openid.oauth.consumer与样本相同

openID 部分工作,但无法让谷歌返回openid.ext2.request_token ,所以我可以继续请求 access_token

我还使用了 openid4java API(带有 oauth 扩展,问题 110),在 oauth 上没有成功

问题

a) 为什么我的链接不起作用,我还需要做什么

b) 如果不使用,Client ID 和 Client Secret 的概念是什么

c)参数:openid.ns.oauth=http://specs.openid.net/extensions/oauth/1.0 也困扰着我,是在 oauth1.0 或 oauth2.0 上工作的 openID+OAuth

请提供任何帮助将不胜感激

谢谢尼科

4

3 回答 3

0

我设法使用以下 API 和配置来实现它

a) 使用 (https://accounts.google.com/ManageDomains) 设置域并使用 (https://developers.google.com/gdata/docs/auth/oauth) 创建和上传 X.509 证书

b) 带有 oauth 扩展的 API openid4java (issue 110)

c) 资源和样本

OAuthExample.java from gdata-samples.java-1.47.1
ConsumerServlet.java from openid4java
Sample.java from issue 110

d) 使用OAuthRsaSha1Signer进行签名(来自 a. Upload X.509 cert),那么 OAuthHmacSha1Signer 不需要 oauthReqTokenSecret 或 accessTokenSecret 巫婆

e) 还需要使用 ContactsService 进行签名

对于 OAuth1 的弃用仍然存在担忧,如果等待 openid 与 OAuth2 一起工作不是更好

有人知道那是什么时候吗???

于 2012-08-27T22:22:54.277 回答
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 auth 的一部分完成),(2)交换请求令牌为访问令牌,(3)使用访问令牌调用 API。

希望这能回答你的问题,但如果不是(或者我在任何地方都没有基地),请告诉我。过去几天我自己一直在与这些东西搏斗,很想听听你的情况。

于 2012-08-15T08:45:53.500 回答
0

我在文档中没有看到 Google 声明 OpenId + OAuth 与 OAuth 2.0 一起使用的任何地方。他们所有的文档都指向 1.0 OAuth,我还没有看到 Google 的任何声明说它适用于 2.0。

于 2012-08-05T05:15:31.960 回答