Skip to main content

Supported messengers

The user confirms a sign-in in a messenger or a mailbox they already use — nothing to install. Your application receives ordinary OpenID Connect tokens whichever channel was used.

In Veriqa's terms a messenger is a channel: the place where the user confirms a sign-in, and the source that vouches for who confirmed it. The word is wider on purpose — Veriqa does not care what stands behind a channel, only what the channel vouches for.

So a channel need not be a messenger. It can be any device that can show a QR code and supply claims that meet three criteria: the device vouches for them itself and the user does not type them, they are bound to a stable identifier, and they reach Veriqa along a path whose authenticity can be checked. Examples of channels that are not messengers: a printer, through its driver, supplies the user who sent the job and where the printer stands; a Wi-Fi display supplies where it is installed and its own hardware ID. Such place channels are used in the scenario Place and identity.

Every channel issues the base claims: channel_type channel_user_id name

A channel card lists what the channel adds on top of them.

— the phone number: it comes only when the application asks for it, and each channel returns it in its own way. More about the phone number

Built-in channels

Available

They ship with Veriqa. The Docker image and the OS service already include all of them — you only enable the ones you need in configuration. When Veriqa is embedded in a .NET application, each channel is a package of its own: install only the ones you need. Eight channels — Telegram, WhatsApp, MAX, Instagram Direct, Messenger, WeChat, Viber and email.

Email

Claims on top of the base
  • email
  • email_verified
  • preferred_username
  • veriqa_channel
  • veriqa_email_mode
Confirmation in the channel
No — optionally in the browser
Secret message
Yes, or a classic magic link

HTTP channel

Available

A channel Veriqa does not ship, connected as an external service written in any language: Veriqa talks to it over HTTP, the platform's keys stay with your service, and nothing has to be compiled — the service is plugged in by configuration. The main uses: a corporate messenger or a bot of your own, a regional platform, and a bot you already run, brought into the Veriqa flow without publishing a new one.

How to write an adapter

Pseudo-channels: Google, Apple and Huawei

Sample

A sign-in at an identity provider wrapped into the shape of a channel. The screen shows a QR code, the user signs in to their Google, Apple or Huawei account on their own phone and confirms on a page there, and the sign-in completes on the screen. Where it helps: signing in with Google on a device without a keyboard, such as a TV; on an operating system outside Google's ecosystem and in a native app; confirming actions; and wherever typing a Google or Apple password is risky — on a shared or someone else's computer, for instance. A user who has none of the messengers can sign in too, with the account their phone already has.

Other channels

Adapters outside the core, each connected in one of two ways: as a .NET assembly compiled into the host that embeds Veriqa, or as an HTTP service plugged in by configuration, with no compilation.

WhatsApp through Baileys in Node

Claims on top of the base
Confirmation in the channel
Yes — a poll with two options
Connected as
HTTP service

Links a number as a companion device, like WhatsApp Web — no Meta Business account and no provider. For debugging and small teams: the client is unofficial, and WhatsApp may ban the number.

Slack

Claims on top of the base None — only the base ones
Secret message
Yes — typed by hand
Connected as
.NET assembly

The platform's links cannot pre-fill a message, so the user types the code shown on screen.

Discord

Claims on top of the base
  • preferred_username
  • picture
  • locale
Secret message
Yes — typed by hand
Connected as
.NET assembly

The platform's links cannot pre-fill a message, so the user types the code shown on screen.

Zalo

Claims on top of the base None — only the base ones
Secret message
Yes — typed by hand
Connected as
.NET assembly

The platform's links cannot pre-fill a message, so the user types the code shown on screen.

KakaoTalk

Claims on top of the base
  • locale
Confirmation in the channel
Yes — two quick-reply buttons
Secret message
Yes — typed by hand
Connected as
.NET assembly

The platform's links cannot pre-fill a message, so the user types the code shown on screen.

Threema

Claims on top of the base
  • preferred_username
Confirmation in the channel
Yes — the user replies YES or NO
Connected as
.NET assembly

Needs a Threema Gateway ID with end-to-end encryption.

Terms

A channel card says whether a secret message is needed, whether there is confirmation in the channel and how the phone number comes. Here is what that means.

Secret message

The message with the sign-in code that the user sends to the channel themselves after tapping the link or scanning the QR code. Veriqa fills it in, the messenger shows it ready, and the user only taps Send. Not every channel needs one.

Telegram, MAX
Not needed — the messenger opens the bot and hands it the code by itself.
WhatsApp
Needed, for stronger security — the ready message goes out with one tap.
Email
The same with a pre-filled letter — the one-tap email.

Confirmation in the channel

The bot asks right in the chat whether to let the sign-in through — into which app and from which device — with Confirm and Decline buttons. It can be switched to automatic mode, and then the sign-in goes through without an extra request.

MAX, Telegram
The question comes as soon as the user opens the link.
WhatsApp
The question comes in reply to the secret message.
Email
No question in the channel — optionally it is asked on a page in the browser.

Phone number

Veriqa takes the number only from the channel — the messenger hands it over, the user never types it. It comes when the application asks for the phone scope, and each channel returns it in its own way; phone_number_verified says whether the channel proves the number is the user's.

WhatsApp
The simplest: the number comes with every message, nothing is asked.
Telegram, MAX
The bot asks after the sign-in is confirmed: the user shares their own contact with one button. MAX — in webhook mode only.
Other channels
A button or the profile without proof of ownership, only your own integration with the platform, or no number at all.

Secret message — examples

WhatsApp: the secret message filled in by Veriqa, ready to send
WhatsApp
Email: the sign-in letter filled in by Veriqa, ready to send
Email

Confirmation in the channel — examples

Telegram: the bot asks to confirm the sign-in, with Confirm and Decline buttons
Telegram
WhatsApp: the user has sent the secret message, and the bot asks to confirm the sign-in
WhatsApp