2011-09-13 54 views
1

我使用OAUTH2身份驗證導入GMAIL聯繫人。在我的代碼,我存儲的配置參數數組:谷歌聯繫人數據API給500錯誤

$clientid=<my Client id>; 
$clientsecret=<my client secret>; 
$redirecturi=<my redirect URL>; 
$max_results = 25; 

下面是我如何創建POST數組:

$fields=array(
    'code'=> urlencode($auth_code), 
    'client_id'=> urlencode($clientid), 
    'client_secret'=> urlencode($clientsecret), 
    'redirect_uri'=> urlencode($redirecturi), 
    'grant_type'=> urlencode('authorization_code') 
); 

$post = ''; 
foreach($fields as $key=>$value) { $post .= $key.'='.$value.'&'; } 
$post = rtrim($post,'&'); 

現在我正在做一個捲曲調用來獲取訪問代幣:

$curl = curl_init(); 
curl_setopt($curl,CURLOPT_URL,'https://accounts.google.com/o/oauth2/token'); 
curl_setopt($curl,CURLOPT_POST,5); 
curl_setopt($curl,CURLOPT_POSTFIELDS,$post); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,TRUE); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,0); 
$result = curl_exec($curl); 
curl_close($curl);    


$response = json_decode($result); 
$accesstoken = $response->access_token; 
log_message('debug','POST'.$post); 
log_message('debug','contents'.$result); 

這是我遇到麻煩的地方。 對於第一回調,該請求訪問令牌過程返回其顯示在我的日誌一個錯誤500迴應如下:

<HTML> 
<HEAD> 
<TITLE>Error processing OAuth 2 request</TITLE> 
</HEAD> 
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"> 
<H1>Error processing OAuth 2 request</H1> 
<H2>Error 500</H2> 
</BODY> 
</HTML> 

所有後續回調,我得到適當的訪問令牌。

第一次出現什麼問題?

更新我以某種方式重置了我的客戶端密鑰,並且一次我得到了正確的XML響應。但突然間,布魯斯已經開始給我一個新的錯誤。

剛剛通過curl調用以獲得access_token,它顯示我{「error」:「invalid_grant」}。爲什麼這樣呢?

+0

同樣的問題在這裏 – Bodman

回答

0

如果您的$auth_code已被使用,您將收到invalid_grant錯誤。授權碼只能使用一次。