oauth2 php库客户端授权
我在用电话。我对如何从oauth2 php库客户端授权,php,oauth,oauth-2.0,google-code,Php,Oauth,Oauth 2.0,Google Code,我在用电话。我对如何从addClient.php页面转到authorize.php页面感到困惑 目前,我在addClient.php页面的中输入了一些凭证,这些凭证正确地插入到我的数据库中。不幸的是,当我将浏览器指向authorize.php页面时,出现以下错误: {"error":"invalid_client"} 有人能帮我理解为什么authorize.php没有从我的数据库中提取我的客户端数据吗?以便使用给定的示例代码访问受保护的资源: 1) 创建客户端(提供客户端id、客户端机密、重定
addClient.php
页面转到authorize.php
页面感到困惑
目前,我在addClient.php
页面的
中输入了一些凭证,这些凭证正确地插入到我的数据库中。不幸的是,当我将浏览器指向authorize.php
页面时,出现以下错误:
{"error":"invalid_client"}
有人能帮我理解为什么
authorize.php
没有从我的数据库中提取我的客户端数据吗?以便使用给定的示例代码访问受保护的资源:
1) 创建客户端(提供客户端id、客户端机密、重定向uri):
2) 从授权服务器获取身份验证代码:
/authorize.php?client_id=foo&response_type=code
它会将您重定向到步骤1中指定的重定向uri,添加code
作为GET
参数
3) 执行POST
请求以获取访问令牌:
/token.php
使用post参数:
grant_type=code&client_id=foo&code=[AUTH_CODE_FROM_STEP_2]&client_secret=[SECRET]&redirect_uri=[REDIRECT_URI_FROM_STEP_1]
它将为您提供JSON,其中包含access\u token
4) 获取受保护的资源(oauth_令牌
可以作为GET
或POST
param传递)
另外,我不知道您是否正在处理一些遗留代码,但是这个库已经过时了,因为它基于oauth 2的09(草稿)版本。官方页面上引用了一些最新的实现。您可能想看看它们。谢谢。嗯,
authorize.php?client_id=foo
仍然给出{“error”:“invalid_client”}
。我想我需要client\u id
加上其他参数?是的,也许我应该用一个更新的实现。虽然这些看起来不那么简单,这是我最初的目标。是否对其中一个有偏好?是的,您还需要response\u type
参数(=token
)。至于较新的oauth库,所有这些库都有测试,看起来不错,尽管我最喜欢——类的组织方式、选择的接口等等(我想这更像是个人喜好),谢谢。好的,当我这样做时它会工作:authorize.php?client\u id=foo&response\u type=token
。但是,当我单击“yep”时,我再次得到invalid\u client
。表单提交后的url如下所示:authorize.php?state=#access_token=9459eb38ff686bdc92e579cebdb1f7d5&expires_in=3600&scope=
。将&scope=public
添加到第一个authorize.php查询字符串并不能防止出现错误。想法?我认为它是正确的:response_type=token意味着它在最新的oauth 2 rfc中被称为“隐式授权”,或者在草案v中被称为“用户代理客户端配置文件”。9 (). 当您创建一个客户端时,您应该提供一个重定向uri,该uri将呈现一个包含js代码的页面。Js然后可以访问URI中的#access#令牌片段,并使用它请求受保护的资源。试试它-fetch protected_resource.php?oauth_token=[ACCESS_token]。对于服务器流,您首先需要从授权服务器(authorize.php?client_id=foo&response\u type=code
)获取授权代码,然后执行POST
请求以获取访问令牌(token.php
带post参数:grant\u type=code&client\u id=foo&code=[AUTH\u code]&client\u secret=[secret]&redirect\u uri=[uri]
)然后用受保护的资源获取受保护的资源。php?oauth\u令牌=[ACCESS\u token]
(oauth\u令牌
可以作为GET
或post
参数传递)。
grant_type=code&client_id=foo&code=[AUTH_CODE_FROM_STEP_2]&client_secret=[SECRET]&redirect_uri=[REDIRECT_URI_FROM_STEP_1]
/protected_resource.php?oauth_token=[ACCESS_TOKEN_FROM_STEP_3]