• Blog
  • How to receive Facebook account info via an Embarcadero Delphi FMX app

How to receive Facebook account info via an Embarcadero Delphi FMX app

How to get Facebook account info without signing into an account

Publish date:
    DISCOVER MORE OF WHAT MATTERS TO YOU

    How to receive Facebook account info via an Embarcadero Delphi FMX app

    Facebook is a social network that boasts high popularity among users from all over the world. Earlier, we have already shown how it is possible to automate the process of posting different types of info on a Facebook page using the Facebook Graph API. We’ve created a Facebook app, an access token and API commands that we’ve further used in our FMX Delphi app.

    In this article, we will show how to get Facebook account info (a user’s name, number of friends, date of birth, information about posts, likes, etc.) without signing into an account. For getting an access token, choosing the necessary settings, and performing some other preparatory actions for the first time, we need to sign in. For further work with the Facebook API, using our FMX Delphi app, we need to create and set up a special Facebook app. This app will allow us to get information about a Facebook user, using the API. For doing that we need to open the developer console by following the link https://developers.facebook.com. Then we need to choose the My Apps tab and click Create App.

    Facebook app creation page

    Then we need to choose the Consumer app type.

    An app type selection page

    A Consumer app will allow us to get information about a Facebook user (a user’s name, date of birth, email, etc.). A Company app is suitable for such tasks as posting on a Facebook page. In our case, we use a Consumer app for having the possibility to get information about a Facebook user. For creating this app, we need to press Next.

    An app type confirm by clicking Next

    Let’s enter a name for our app and press Create App.

    Providing basic information of our Facebook app

    The app has been created.

    Main page of our Facebook app

    For testing app functioning, getting a user’s token and making test GET requests for receiving information about a current user in the JSON format, let’s use Graph API Explorer. Now we should choose Tools and then Graph API Explorer.

    Selection Graph API Explorer tool

    For working with the Facebook API, we need to get a user’s token. To do that we need to choose Get Token.

    App’s access token selection

    We should choose Get User Access Token.

    Getting user access token

    Now just click Continue as a current user.

    Access to current user account confirmation

    For getting various information about the account (a user’s name, number of friends, date of birth, information about posts and likes, etc.) we should set the relevant permissions.

    Special permissions’ selection

    Let’s press Add Permissions and then User Data Permissions.

    User data permissions

    In our example, we will choose all the permissions offered on the dropdown list.

    Choosing all necessary permissions

    For using all the necessary permissions, we need to click the Generate Access Token button.

    Access token generating

    Now just press Continue as the current user.

    Access to current user account confirmation

    Let’s make a test GET request for getting a user’s name and id. We need just to click Submit.

    Test GET request implementation

    The ID and user’s name have been successfully received in the response in JSON format.

    The result of our GET request (we received user’s id and first name from Facebook Graph API)

    Let’s make a test GET request with a bigger number of parameters. As a response, we will get information about the date of birth, the number of friends, URL link to the profile photo, information about the user’s posts, etc. And all this will be provided in JSON format.

    GET request with all necessary parameters (user email, user name, user birthday, user likes etc.)

    For getting information about a user with the help of an FMX Embarcadero Delphi app, it is necessary to get a long-term token. Now we need just to press “i” and then click Open in Access Token Tool.

    Access token for further using in our Delphi FMX app obtaining

    For confirming our choice, we should re-enter our password and press Submit.

    User’s password confirmation

    The received long-term token should be saved for further use in our FMX Delphi app.

    Our long-term access token

    For making a GET request with further receiving data about a Facebook user in JSON format in our Delphi app, we will use a standard component TNetHttpClient.

    TNetHTTPClient component (tab Net)

    For showing the response from the Facebook Graph API with the information about a user in JSON format, let’s use a TMemo component (tab Standard on the Component Palette).

    TMemo component (tab Standard)

    For our convenient work with the Facebook Graph API, we will use a class named TFacebookAPIClass. This class has four private fields. The current client of the class TNetHttpClient (NetHttpClient), the URL address of the  Facebook Graph API (ApiCommand), a user access token (AccessToken), and a multi-line input field TMemo for saving a JSON reply from the server (Memo).

    All private fields of our class

     This class also has a constructor (Create) and two methods (ConnectToAPI, FormatJSON).

    All methods of our class

    The constructor allows conducting setting of all the necessary fields when you are creating an instance of a class (object).

    Constructor of our class

    In the ConnectToAPI method, a GET inquiry is executed using the Get method of the TNetHttpClient class. The LResponse object of the TStringStream class is used for storing a JSON response received from the server. For formatting a JSON response from the server with its further demonstration in TMemo, the FormatJSON method is used.

    ConnectToAPI method

    As the first entry parameter, the Get method takes an API command for getting access to the Facebook Graph API and a user access token. As the second parameter, a variable LResponse of the TStringStream is taken.

    TNetHTTPClient’s GET method

    The program code of the TFacebookAPIClass class is presented below.

    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
    unit TFacebookAPIClass
    interface
    uses
    System.SysUtils, System.Types, System.UITypes, System.Classes,
    System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics,
    FMX.Dialogs, FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, FMX.StdCtrls,
    FMX.Controls.Presentation, System.Net.URLClient, System.Net.HttpClient,
    System.Net.HttpClientComponent, JSON, System.Threading;
    type
    TFacebookAPI = class
    private
    NetHttpClient: TNetHTTPClient;
    ApiCommand: string;
    AccessToken: string;
    Memo: TMemo;
    public
    constructor Create(NetHttpClient: TNetHTTPClient;
    ApiCommand, AccessToken: string; Memo: TMemo); overload;
    procedure ConnectToAPI; overload;
    function FormatJSON(JSON: String): string; overload;
    end;
    implementation
    { TFacebookAPI }
    constructor TFacebookAPI.Create(NetHttpClient: TNetHTTPClient;
    ApiCommand, AccessToken: string; Memo: TMemo);
    begin
    if NetHttpClient is TNetHTTPClient then
    Self.NetHttpClient := NetHttpClient
    else
    begin
    ShowMessage('Wrong class instance!');
    Exit;
    end;
    if AccessToken <> '' then
    Self.AccessToken := AccessToken
    else
    begin
    ShowMessage('Access token is empty!');
    Exit;
    end;
    if ApiCommand <> '' then
    Self.ApiCommand := ApiCommand
    else
    begin
    ShowMessage('ApiCommand is empty!');
    Exit;
    end;
    if Memo is TMemo then
    Self.Memo := Memo
    else
    begin
    ShowMessage('Wrong class instance!');
    Exit;
    end;
    end;
    procedure TFacebookAPI.ConnectToAPI;
    begin
    TTask.Run(
    procedure
    var
    LResponse: TStringStream;
    begin
    try
    LResponse := TStringStream.Create;
    NetHttpClient.Get(ApiCommand + AccessToken, LResponse);
    TThread.Synchronize(nil,
    procedure
    begin
    Memo.Text := FormatJSON(LResponse.DataString);
    end);
    finally
    FreeAndNil(LResponse);
    Self.Free;
    end;
    end);
    end;
    function TFacebookAPI.FormatJSON(JSON: string): string;
    var
    tmpJson: TJsonObject;
    begin
    tmpJson := TJsonObject.ParseJSONValue(JSON) as TJsonObject;
    try
    Result := tmpJson.Format();
    finally
    FreeAndNil(tmpJson);
    end;
    end;
    end.

    The click processor of the button “Request to Facebook API” contains the logic of the app’s work for interaction with the Facebook API. Here we need to create an object FacebookAPI of the TFacebookAPI class. Now we need to call a constructor with further transfer of all the necessary parameters (an object of the TNetHttpClient, Facebook API URL, user access token,  object of the TMemo class). The entire work related to the connection to the FacebookAPI with further getting a JSON response is executed by the ConnectToAPI method.

    Button’s onClick handler

    Let’s test our FMX Delphi app. The result of the app work is presented below.

    Our Delphi FMX app running on Windows platform

    Here you can see the received response in JSON format in accordance with the real data of the Facebook account.

    Comparison of our real Facebook user account’s data to obtained in JSON format from our Delphi FMX app

    Subscribe to our newsletter and get amazing content right in your inbox.

    This field is required
    This field is required Invalid email address

    Thank you for subscribing!
    See you soon... in your inbox!

    confirm your subscription, make sure to check your promotions/spam folder

    Subscribe to our newsletter and get amazing content right in your inbox.

    You can unsubscribe from the newsletter at any time

    This field is required
    This field is required Invalid email address

    You're almost there...

    A confirmation was sent to your email

    confirm your subscription, make sure to check
    your promotions/spam folder