Google Contactos de datos API dando 500 Error

Estoy usando la autenticación OAUTH2 para importar contactos GMAIL. En mi código, estoy almacenando los parámetros de configuración en una matriz:

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

Abajo es cómo creo la matriz 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,'&');

Ahora estoy haciendo unRIZ llame para obtener el token de acceso:

$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);

Aquí es donde tengo problemas. Para el primera devolución de llamada, este proceso de token de acceso de solicitud devuelve unError 500 respuesta que se muestra en mis registros de la siguiente manera:

<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>

Pero paratodos los callbacks posteriores, Obtengo el token de acceso adecuado.

¿Qué va mal por primera vez?

Actualiza De alguna manera restablecí mi secreto de cliente y, por un tiempo, obtuve la respuesta XML adecuada. Pero, de repente, fuera del blues, comenzó a darme un nuevo error.

Justo después de la llamada curl para obtener el access_token, me muestra {"error": "invalid_grant"}. ¿Por qué esto es así?

Respuestas a la pregunta(1)

Su respuesta a la pregunta