0

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

<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”中,我不知道为什么。难道我做错了什么?

4

2 回答 2

2

There's no redirect involved in the exchange authorization code for an access token step. You should use a server side POST request here, where you get the access token and refresh token as a direct response. In your example the user's browser would send such a request, but not listen for its response.

Note that your client secret would be accessible publicly in your website's source code.

There are multiple ways to do a server side POST request with PHP, e.g. using cURL.

于 2012-10-05T15:19:17.667 回答
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 APIs 客户端库可以很容易地实现这一点:

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

还有一个现场示例,您可以从以下位置使用/借用代码:

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

于 2012-10-05T19:41:27.150 回答