SharklioDocs Log in

DocsIntegration

Offerwall Link and iFrame

How to open the offerwall for a signed-in user, build the security hash on your server, and embed it on your site.

Every approved app has its own link. You find it, ready to copy, in your dashboard under Apps, your app, Integration.

https://wall.sharklio.com/{APP_ID}?user_id={USER_ID}&hash={HASH}
ParameterRequiredDescription
user_idYesThe ID of the signed-in user in your system. 1 to 128 characters from A-Z a-z 0-9 . _ @ : + -. It must never change for the same user. URL-encode it.
hashYes, while link security is onHMAC-SHA256 of the user ID with your link hash salt, as lowercase hex. It stops users from changing the user ID in the link to open the offerwall as someone else.

Link security is on by default. You can turn it off in the Integration tab, but we do not recommend it.

Build the hash on your server

The link hash salt is a secret. Build the hash on your server and send only the finished link to the browser. Never put the salt in JavaScript or in an app bundle.

PHP:

$hash = hash_hmac('sha256', $userId, $linkHashSalt);
$url  = 'https://wall.sharklio.com/' . $appId . '?user_id=' . rawurlencode($userId) . '&hash=' . $hash;

Node.js:

const crypto = require('crypto');
const hash = crypto.createHmac('sha256', linkHashSalt).update(String(userId)).digest('hex');
const url = `https://wall.sharklio.com/${appId}?user_id=${encodeURIComponent(userId)}&hash=${hash}`;

Python:

import hmac, hashlib
from urllib.parse import quote
hash = hmac.new(link_hash_salt.encode(), str(user_id).encode(), hashlib.sha256).hexdigest()
url = f"https://wall.sharklio.com/{app_id}?user_id={quote(str(user_id))}&hash={hash}"

The Integration tab has a Test a link tool: type a user ID and it shows the exact link your server should build.

Embed with an iframe

<iframe title="Offerwall" src="https://wall.sharklio.com/{APP_ID}?user_id={USER_ID}&amp;hash={HASH}"
  width="100%" height="800" style="border:0" allow="clipboard-write"
  referrerpolicy="strict-origin-when-cross-origin"></iframe>

For safety, the offerwall only loads inside frames on the website you registered for the app and its subdomains. Opening the link directly in a tab, a new window, or a mobile WebView works everywhere.

Mobile apps

Open the link in a WebView or in the system browser. Build the link on your backend and pass it to the app, so the salt stays on your server.

What your users see

  • Earn: the offers available for their country and device, with search, categories, a device filter, and sorting.
  • Reward status: offers they started (In progress), finished (Completed, with Credited, Pending, Rejected, or Reversed), and let run out (Expired).
  • Links to our Terms of Service and Privacy Policy, and their user ID for support questions.

Error pages

PageReason
Link not validThe hash is missing or does not match the user ID.
Missing user IDThe user_id parameter is missing or has characters we do not accept.
Offerwall not available yetThe app is not approved yet.
Offerwall pausedOur team paused the app. Check your notifications.