我正在尝试使用OAuth 2.0登录Google。在我拿到临时授权码然后用它来获取access_token
后,谷歌不会把我重定向到我发帖时设置的网址,这是我发帖的代码:
<form action="https://accounts.google.com/o/oauth2/token" method="post">
<input type="text" name="code" value='##code##'/>
<input type="text" name="client_id" value='##client_id##'/>
<input type="text" name="client_secret" value='##client_secret##'/>
<input type="text" name="redirect_uri" value='http://boomroom.tv/test.php'/>
<input type="text" name="grant_type" value='authorization_code'/>
<input type="submit" /></form>
在我获得 JSON 格式的access_token后,它不会将我重定向到我的 URL,但保留在页面"https://accounts.google.com/o/oauth2/token"中,我不知道为什么。我做错了什么吗?
访问令牌步骤的交换授权代码中不涉及重定向。应在此处使用服务器端 POST 请求,在该请求中获取访问令牌和刷新令牌作为直接响应。在您的示例中,用户的浏览器将发送此类请求,但不侦听其响应。
请注意,可以在网站的源代码中公开访问客户端密码。
有多种方法可以使用PHP执行服务器端POST请求,例如使用cURL。
服务器端做这个,Jan的响应是正确的。
如果要在浏览器中处理客户端事务,可以使用单独的 OAuth 2 for Web 应用程序流:
https://developers.google.com/youtube/2.0/developers_guide_protocol_oauth2#OAuth2_Client_Side_Web_Applications_Flow
用于JavaScript的Google APIs客户端库使实现这一点变得非常容易:
https://code.google.com/p/google-api-javascript-client/wiki/Authentication
还有一个实时示例,您可以从以下位置使用/借用代码:
http://gdata-samples.googlecode.com/svn/trunk/gdata/youtube_upload_cors.html