Google无法重定向到我设置的网址OAuth 2

时间:2012-10-05 14:35:18

标签: php redirect oauth-2.0 youtube-api

我正在尝试使用OAuth 2.0登录Google。获得临时授权码然后​​使用它来获取access_token后,Google不会将我重定向到我发布时设置的网址,这是我发布的代码:

<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后,它不会将我重定向到我的网址,但请保留在页面“https://accounts.google.com/o/oauth2/token”中,我不知道为什么。我做错了吗?

2 个答案:

答案 0 :(得分:2)

exchange authorization code for an access token step中没有涉及重定向。您应该在此处使用服务器端POST请求,您可以在其中获得访问令牌刷新令牌作为直接响应。在您的示例中,用户的浏览器将发送此类请求,但不会侦听其响应。

请注意,您的客户端密码可以在您网站的源代码中公开访问。

使用PHP执行服务器端POST请求有多种方法,例如: using cURL

答案 1 :(得分:1)

如果您想在服务器端执行此操作,Jan的回复是正确的。

如果您想在浏览器中处理客户端的事情,可以使用单独的OAuth 2 for Web Applications流程:

https://developers.google.com/youtube/2.0/developers_guide_protocol_oauth2#OAuth2_Client_Side_Web_Applications_Flow

适用于JavaScript的Google API客户端库可让您轻松实现此目标:

https://code.google.com/p/google-api-javascript-client/wiki/Authentication

还有一个可以播放的实时样本/借用以下代码:

http://gdata-samples.googlecode.com/svn/trunk/gdata/youtube_upload_cors.html