Gmail API:请求 API 的示例
Gmail API: example of a request to the API
我正在尝试使用我的应用程序访问 Gmail API。我应该正确地完成所有设置,并且我正在测试对 API 的请求,具体来说是将消息设为只读的请求。
我的代码:
public function gmail_get_messages()
{
$client = new Google_Client();
$client->setApplicationName("Gmail API test");
$client->setDeveloperKey("MY_KEY");
$client->setClientSecret('MY_CLIENT_SECRET');
$client->setScopes(array('https://www.googleapis.com/auth/gmail.readonly'));
// $client->setAccessToken($token);
$service = new Google_Service_Gmail($client);
$url = 'https://www.googleapis.com/gmail/v1/users/MY_EMAIL/messages';
$header = array("Authorization: access_token {MY_ACCESS_TOKEN}");
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$retValue = curl_exec($ch);
$response = json_decode(curl_exec($ch));
$ee = curl_getinfo($ch);
print_r($ee);
print_r($retValue);
}
回复:
{ "error": { "errors": [ { "domain": "global", "reason": "authError", "message": "Invalid Credentials", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Invalid Credentials" } }
一个要点是关于代币。我已经获得访问令牌和刷新令牌作为 json 格式的文件,但我不知道如何将它们包含在请求中。
如何正确地将令牌传递给请求?是唯一缺少的东西还是还有其他东西?
如果有人能提供一个正确请求的例子,我将不胜感激!
我觉得你很接近!尝试像这样将访问令牌分配给客户端:
$client = new Google_Client();
$client->setApplicationName('Gmail API test');
$client->setDeveloperKey('MY_KEY');
$client->setClientSecret('MY_CLIENT_SECRET');
$client->SetClientId('MY_CLIENT_ID');
$client->setScopes(array('https://www.googleapis.com/auth/gmail.readonly'));
$client->setAccessToken('{"access_token":"MY_ACCESS_TOKEN",
"token_type":"Bearer","expires_in":3600,
"refresh_token":"MY_REFRESH TOKEN","created":1433329214}');
$service = new Google_Service_Gmail($client);
$messages = $service->users_messages->listUsersMessages('me');
$list = $messages->getMessages();
// Look at the contents of the first message
$message = $list[0];
$parts = $message->getPayload()->getParts();
$body = $parts[0]['body'];
$rawData = $body->data;
$sanitizedData = strtr($rawData,'-_', '+/');
$decodedMessage = base64_decode($sanitizedData);
var_dump($decodedMessage);
我正在尝试使用我的应用程序访问 Gmail API。我应该正确地完成所有设置,并且我正在测试对 API 的请求,具体来说是将消息设为只读的请求。
我的代码:
public function gmail_get_messages()
{
$client = new Google_Client();
$client->setApplicationName("Gmail API test");
$client->setDeveloperKey("MY_KEY");
$client->setClientSecret('MY_CLIENT_SECRET');
$client->setScopes(array('https://www.googleapis.com/auth/gmail.readonly'));
// $client->setAccessToken($token);
$service = new Google_Service_Gmail($client);
$url = 'https://www.googleapis.com/gmail/v1/users/MY_EMAIL/messages';
$header = array("Authorization: access_token {MY_ACCESS_TOKEN}");
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_ENCODING, "gzip");
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)');
$retValue = curl_exec($ch);
$response = json_decode(curl_exec($ch));
$ee = curl_getinfo($ch);
print_r($ee);
print_r($retValue);
}
回复:
{ "error": { "errors": [ { "domain": "global", "reason": "authError", "message": "Invalid Credentials", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Invalid Credentials" } }
一个要点是关于代币。我已经获得访问令牌和刷新令牌作为 json 格式的文件,但我不知道如何将它们包含在请求中。
如何正确地将令牌传递给请求?是唯一缺少的东西还是还有其他东西?
如果有人能提供一个正确请求的例子,我将不胜感激!
我觉得你很接近!尝试像这样将访问令牌分配给客户端:
$client = new Google_Client();
$client->setApplicationName('Gmail API test');
$client->setDeveloperKey('MY_KEY');
$client->setClientSecret('MY_CLIENT_SECRET');
$client->SetClientId('MY_CLIENT_ID');
$client->setScopes(array('https://www.googleapis.com/auth/gmail.readonly'));
$client->setAccessToken('{"access_token":"MY_ACCESS_TOKEN",
"token_type":"Bearer","expires_in":3600,
"refresh_token":"MY_REFRESH TOKEN","created":1433329214}');
$service = new Google_Service_Gmail($client);
$messages = $service->users_messages->listUsersMessages('me');
$list = $messages->getMessages();
// Look at the contents of the first message
$message = $list[0];
$parts = $message->getPayload()->getParts();
$body = $parts[0]['body'];
$rawData = $body->data;
$sanitizedData = strtr($rawData,'-_', '+/');
$decodedMessage = base64_decode($sanitizedData);
var_dump($decodedMessage);