Skip to content
Levi edited this page Jun 11, 2026 · 7 revisions

Description

This document is a practical step-by-step guide for programmers who wish to integrate the SAP Customer Data Cloud from Gigya service into their Python application. Follow the steps below to get started, and use the Library Reference while implementing.

This SDK currently supports:

  • Python 2.7.x
  • Python 3.x

Library Guide

Follow these steps to integrate this library in your Python application:

Download the zip file from: Gigya Developer Downloads

The file includes the GSSDK.py and the cacert.pem files. Extract both files to the same location

Obtain Gigya's APIKey and Secret key

Import GSSDK.py library into your application

Log the user in

Use Gigya's API - Send Requests

Incorporate Security Measures

Obtaining Gigya's APIKey and Secret key

Making API calls requires an API Key and a Secret Key which are obtained from the Site Settings page of the SAP Customer Data Cloud admin console. The Secret Key must be kept secret and never transmitted to an untrusted client or over insecure networks. The API Key and the Secret Key are required parameter in each request (further ahead in this document you will find guidance for sending requests).

Importing the GSSDK.py Library into Your Application

To get started, you'll need to import Gigya Python SDK to your application:

  • Copy the GSSDK.py file to your Python application path.

  • Import the GSSDK.py file into your application:

from GSSDK import *

You should now be able to use the SDK in your project.

Logging the User in

The first interaction with Gigya must always be logging in. If the user is not logged in, you cannot access their social profile data. Sending requests requires an identified Gigya user (the identification of whom is performed using the UID parameter) with an active session. A user session is created when a user logs in via the Gigya service. Log users in through your client application using our Web SDK methods: socialize.login, socialize.notifyLogin, or using our ready made Social Login UI.

To learn more about the login process, see Social Login.

Sending a Request

After you have logged in the user, you may use the GSRequest class to access the user profile and perform various activities. This is implemented using GSRequest's send method. The following code sends a request to set the current user's status to "I feel great" (note that this example is using deprecated functionality no longer provided by SAP Customer Data Cloud):

# Define the API-Key and Secret key (the keys can be obtained from your site setup page on Gigya's website).
apiKey = "PUT-YOUR-APIKEY-HERE"
secretKey = "PUT-YOUR-SECRET-KEY-HERE"
 
# Step 1 - Defining the request and adding parameters
method = "socialize.setStatus"
params={"uid":"PUT-UID-HERE", "status":"I feel great"}    # Set "uid" to the user's ID, and "status" to "I feel great"
request = GSRequest(apiKey,secretKey,method,params)
 
# Step 2 - Sending the request
response = request.send()
 
# Step 3 - handling the request's response.
if (response.getErrorCode()==0):
    # SUCCESS! response status = OK  
    print "Success in setStatus operation." 
else:
    # Error
    print "Got error on setStatus: " + response.getErrorMessage()
    # You may also log the response: response.getLog()  

Step 1: Defining the Request and Adding Parameters

Create a GSRequest instance:

method = "socialize.setStatus"
params={"uid":"PUT-UID-HERE", "status":"I feel great"}    # Set "uid" to the user's ID, and "status" to "I feel great"
request = GSRequest(apiKey,secretKey,method,params)  

The parameters of the GSRequest are:

  • apiKey
  • secretKey
  • method - the Gigya API method to call, including namespace. For example: 'socialize.getUserInfo'. Refer to REST API reference for the list of available methods.
  • params - In this case the uid and status.

Note: In the REST API reference you may find the list of available Gigya API methods and the list of parameters per each method.

Step 2: Sending the Request

Execute GSRequest's send method:

response = request.send()  

The method returns a GSResponse object, which is handled in the next step.

By default, requests to Gigya APIs are sent using the "us1.gigya.com" domain. If your site has been set up to use another of Gigya's data centers, you must specify that the request should be sent to that specific data center by adding the following line of code before calling the send method:

request.setAPIDomain("<Data_Center>")  

If you are not sure of your site's data center, see Finding Your Data Center.

See the GSRequest documentation for more information.

Step 3: Handling the Response

Use the GSResponse object to check the status of the response, and to receive response data:

if (response.getErrorCode()==0):
    # SUCCESS! response status = OK 
    print "Success in setStatus operation."
else:
    # Error
    print "Got error on setStatus: " + response.getErrorMessage()
    # You may also log the response: response.getLog()  

The GSResponse object includes data fields. For each request method, the response data fields are different. Refer to REST API reference for the list of response data fields per method.

For example - handling a socialize.getUserInfo response:

The response of 'socialize.getUserInfo' includes a 'user' object.

# Sending 'socialize.getUserInfo' request
params = {"uid", "PUT-UID-HERE"}  // set the "uid" parameter to user's ID
request = GSRequest(apiKey,secretKey,"socialize.getUserInfo",params)
response = request.send()
 
# Handle 'getUserInfo' response
if (response.getErrorCode() == 0):
    # SUCCESS! response status = OK
    nickname = response.getObject("nickname")
    age = response.getObject("age")
    print "User name: " + nickname + " The user's age: " + age
else:
    print "Got error on getUserInfo: " + response.getErrorMessage()
    # You may also log the response: response.getLog()  

Incorporating Security Measures

Validating Signatures

Signature validation is only necessary and supported when validating the signature of a response that was received on the client side and then passed to the server. Server-to-server calls do not contain the UIDSignature or signatureTimestamp properties in the response.

The Gigya service supports a mechanism to verify the authenticity of the Gigya processes, to prevent fraud. When Gigya sends you information about a user, your server needs to know that it is actually coming from Gigya. For that cause, Gigya attaches a cryptographic signature to the responses that include user information. We highly recommend validating the signature. The SigUtils class is a utility class for generating and validating signatures.

For example, Gigya signs the socialize.getUserInfo method response. The following code validates the signature received with the 'socialize.getUserInfo' method response:

# Handle 'socialize.getUserInfo' response
if (response.getErrorCode()==0):
    # SUCCESS! response status = OK
    # Validate the signature:
    valid = SigUtils.validateUserSignature(response.getObject("UID"),response.getObject("signatureTimestamp"),
        secretKey,response.getObject("UIDSignature"))
    if (valid):
        print "signature is valid"
    else:
     print "signature is not valid"  

The parameters of the validateUserSignature method are:

  • UID - the user's unique ID

  • signatureTimestamp - The GMT time of the response in UNIX time format (i.e. the number of seconds since Jan. 1st 1970). The method validates that the timestamp is within five minutes of the current time on your server.

  • secretKey - The key to verification is your partner's "Secret Key". Your secret key (provided in BASE64 encoding) is located at the top of the Site Settings page of the SAP Customer Data Cloud admin console.

  • UIDSignature - the cryptographic signature.

All the parameters, with the exception of the secretKey, should be taken from the User object received with the 'getUserInfo' method response.

The validateUserSignature method returns a Boolean value, signifying if the signature is valid or not.

Sending Requests over HTTPS

If you would like to use Gigya service over HTTPS, you will need to do the following:

Create a GSRequest object using the constructor that receives five parameters. The additional fifth parameter is a Boolean parameter named useHTTPS. Set this parameter to be true (default).

.