2013-06-12 30 views
0

我正在制作一个PHP应用程序,它将使用一个Google Drive帐户。带有刷新令牌的OAuth流程。错误500

因此,作为管理员,我首先授予Google Drive帐户的权限。 当权限被接受时,我将刷新标记保存在数据库中。

之后,在一个不同的URL,将被客户端使用,我试图验证。

接下来,我拉刷新令牌从数据库中,然后进行POST请求:

$url = "https://accounts.google.com/o/oauth2/token"; 

与参数:

$post_data = array(
    'client_id' => CLIENT_ID, 
    'client_secret' => CLIENT_SECRET, 
    'refresh_token' => $refreshToken, 
    'grant_type' => 'refresh_token'); 

一个获得成功的响应后,我保存的access_token但是当我尝试交换凭据时,我收到此错误消息:

An error occurred: Error fetching OAuth2 access token, message: '  
Error processing OAuth 2 request 

Error 500 
' 
Fatal error: Uncaught exception 'CodeExchangeException' in ... 

我是m在这里发布一些东西? 我使用的oauth流是否正确?

在此先感谢!

回答

1

当您从刷新令牌获取访问令牌时,该访问令牌本身就是一个凭证,并且之后没有交换过程。在凭证中,有:1.访问令牌2.刷新令牌。并且您获得授权代码的交换凭证,而不是访问令牌。所以在你的代码中,在访问令牌交换访问令牌的过程中发生错误。

+0

thnx您的回复。所以,使用刷新令牌,我得到一个包含access_token和id_token的json obj。我应该如何处理这个json obj?通过它来建立服务? – Paschalis

+0

我不知道该如何处理该json对象。但是,在某处应该有一些关于刷新令牌的抽象。我对google-api-php-client不太确定,但在google-api-python-client中,如果Credentials.authorize过期,它会自动尝试刷新令牌,以至于从开发者级别开始,它们甚至不会不得不打扰任何关于清爽的事情。应该有一些关于清爽的抽象,并且你不必亲自处理它。我建议您不要单独处理刷新,而应仔细阅读文档。 –