Sample code for 30+ languages & platforms
Delphi DLL

Google OAuth2 v3 userinfo (https://www.googleapis.com/oauth2/v3/userinfo)

See more Google APIs Examples

Demonstrates how to get the Google OAuth2 v3 userinfo.

Important: Make sure the OAuth2 access token included "profile" in the list of scopes.

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, StringBuilder, JsonObject;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
jsonToken: HCkJsonObject;
http: HCkHttp;
sbResponseBody: HCkStringBuilder;
json: HCkJsonObject;

begin
success := False;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

// It is assumed we previously obtained an OAuth2 access token.
// This example loads the JSON access token file 
// originally obtained by this example: Get Google People API OAuth2 Access Token
// or refreshed by this example: Refresh Google People API OAuth2 Access Token

jsonToken := CkJsonObject_Create();
success := CkJsonObject_LoadFile(jsonToken,'qa_data/tokens/googlePeople.json');
if (success <> True) then
  begin
    Memo1.Lines.Add('Failed to load googleContacts.json');
    Exit;
  end;

http := CkHttp_Create();

// -------------------------------------------------------------------------------------
// Make sure the access token was obtained with "profile" included in the list of scopes.
// -------------------------------------------------------------------------------------
CkHttp_putAuthToken(http,CkJsonObject__stringOf(jsonToken,'access_token'));

sbResponseBody := CkStringBuilder_Create();
success := CkHttp_QuickGetSb(http,'https://www.googleapis.com/oauth2/v3/userinfo',sbResponseBody);
if (success = False) then
  begin
    Memo1.Lines.Add(CkHttp__lastErrorText(http));
    Memo1.Lines.Add(CkStringBuilder__getAsString(sbResponseBody));
    Exit;
  end;

// Sample JSON Response

json := CkJsonObject_Create();
CkJsonObject_putEmitCompact(json,False);
CkJsonObject_Load(json,CkStringBuilder__getAsString(sbResponseBody));
Memo1.Lines.Add(CkJsonObject__emit(json));

// Sample response:

// {
//   "sub": "119999690625687999964",
//   "name": "Matt",
//   "given_name": "Matt",
//   "picture": "https://lh3.googleusercontent.com/-b4...eg3Zjo/AAAAAAAAAAI/AAAAAAAAAAA/AMZuu....3RpdA/s96-c/photo.jpg",
//   "locale": "en"
// }
// 

CkJsonObject_Dispose(jsonToken);
CkHttp_Dispose(http);
CkStringBuilder_Dispose(sbResponseBody);
CkJsonObject_Dispose(json);

end;