C++ GMail: Parse GMail REST API Error Response

Back to Index

Gets the current user's Gmail profile, but shows an error response and how to parse it..

Documentation: https://developers.google.com/gmail/api/v1/reference/users/getProfile


#include <CkRest.h>
#include <CkOAuth2.h>
#include <CkStringBuilder.h>
#include <CkJsonObject.h>

void ChilkatSample(void)
    {
    CkRest rest;
    bool success;

    //   Provide a previously obtained OAuth2 access token.
    CkOAuth2 oauth2;
    oauth2.put_AccessToken("OAUTH2_ACCESS_TOKEN");
    rest.SetAuthOAuth2(oauth2);

    success = rest.Connect("www.googleapis.com",443,true,true);
    if (success != true) {
        std::cout << rest.lastErrorText() << "\r\n";
        return;
    }

    rest.AddPathParam("userId","matt@chilkat.io");

    CkStringBuilder sbJson;
    success = rest.FullRequestNoBodySb("GET","/gmail/v1/users/userId/profile",sbJson);
    if (success != true) {
        std::cout << rest.lastErrorText() << "\r\n";
        return;
    }

    if (rest.get_ResponseStatusCode() != 200) {
        std::cout << "Received error response code: " << rest.get_ResponseStatusCode() << "\r\n";
        std::cout << "Response body:" << "\r\n";
        std::cout << sbJson.getAsString() << "\r\n";
        return;
    }

    CkJsonObject json;
    json.LoadSb(sbJson);

    //  The following code parses the JSON response.
    //  A sample JSON response is shown below the sample code.
    int errorCode;
    const char *errorMessage = 0;
    int i;
    int count_i;
    const char *domain = 0;
    const char *reason = 0;
    const char *message = 0;
    const char *extendedHelp = 0;

    errorCode = json.IntOf("error.code");
    errorMessage = json.stringOf("error.message");
    i = 0;
    count_i = json.SizeOfArray("error.errors");
    while (i < count_i) {
        json.put_I(i);
        domain = json.stringOf("error.errors[i].domain");
        reason = json.stringOf("error.errors[i].reason");
        message = json.stringOf("error.errors[i].message");
        extendedHelp = json.stringOf("error.errors[i].extendedHelp");
        i = i + 1;
    }

    std::cout << "Example Completed." << "\r\n";
    }

Sample JSON Response Body

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured. Gmail API has not been used in project 377697329735 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/gmail.googleapis.com/overview?project=377697329735 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
    "extendedHelp": "https://console.developers.google.com/apis/api/gmail.googleapis.com/overview?project=377697329735"
   }
  ],
  "code": 403,
  "message": "Access Not Configured. Gmail API has not been used in project 377697329735 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/gmail.googleapis.com/overview?project=377697329735 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."
 }
}