Описание строки signed_request

Строка signed_request - это объединение подписи методом HMAC SHA256 base64 кодированной строки данных в формате JSON, точки(.), и самой base64 кодированной строки данных в формате JSON.
Данные подписываются с помощью секретного ключа вашего приложения, который известен только Admitad. Подпись позволяет вам удостовериться, что запрос отправлен именно Admitad. Без секретного ключа приложения невозможно подделать строку signed_request.

Пример данных, передаваемых приложению:

{
    'username':         'webmaster1',
    'id':               96
    'first_name':       'name',
    'last_name':        'surname',
    'algorithm':        'HMAC-SHA256',
    'language':         'ru',
    'access_token':     '8953353203',
    'refresh_token':    '25ad2f2036',
    'expires_in':       60800
}

Описание полей данных:

Название Описание
username Имя пользователя (login)
id Идентификатор пользователя
first_name Имя пользователя
last_name Фамилия пользователя
algorithm Алгоритм, используемый для создания подписи данных
language Язык пользователя
access_token Ключ доступа пользователя
refresh_token Ключ, используемый для обновления ключа доступа
expires_in Время действия ключа пользователя в секундах

Пример кода на Python для кодировки данных:

import base64
import hmac
import simplejson
def encode_data(data):
    data = base64.b64encode(simplejson.dumps(data))
    signature = hmac.new(
        str(secret), msg=data, digestmod=hashlib.sha256).hexdigest()
    return '%s.%s' % (signature, data)

Пример кода на Python для декодировки и проверки данных:

import base64
import hmac
import simplejson
def decode_data(signed_request):
    signature, payload = signed_request.split('.', 1)
    data = simplejson.loads(base64.b64decode(payload))
    if data.get('algorithm').upper() != 'HMAC-SHA256':
        return
    expected_signature = hmac.new(
        str(secret), msg=payload, digestmod=hashlib.sha256).hexdigest()
    if signature != expected_signature:
        return
    return data

Пример подписанных данных:

f78d369c6a91ba4f6d09ab26d5ab8a0676d164481560fc3e5cdf223b2f716415.eyJ1c2VybmFtZSI6ICJ3ZWJtYXN0ZXIxIiwgImZpcnN0X25hbWUiOiAibmFtZTEyMyIsICJsYXN0X25hbWUiOiAic3VybmFtZTEyMyIsICJhbGdvcml0aG0iOiAiSE1BQy1TSEEyNTYiLCAibGFuZ3VhZ2UiOiAicnUiLCAiYWNjZXNzX3Rva2VuIjogImVkNTU1NDU5NWYiLCAiZXhwaXJlZF9pbiI6IDEzNDIwMDMxMDcsICJpZCI6IDk2LCAicmVmcmVzaF90b2tlbiI6ICI1OTVkNGUxMTU1In0%3D