Authentification Telegram

La doc en ligne

Présentation
https://telegram.org/blog/login
Exemple
https://core.telegram.org/widgets/login
data-request-access="write"
permet l'envoi de messages à l'utilisateur depuis le bot (par défaut un bot avec qui on n'a pas échangé ne peut pas nous parler)
data-auth-url=""
Redirection une fois logué
data-userpic="false"
Pour ne pas afficher photo du profil utilisateur
data-size="large"
ou medium ou small : taille du bouton de connexion

Login JavaScript

  1. on lance une page protégée par exemple login.htm
  2. cette page contient un appel à <script async src="https://telegram.org/js/telegram-widget.js?4" data-telegram-login="login_data_telegram_bot" data-size="large" data-onauth="onTelegramAuth(user)" data-request-access="write">
  3. on entre son tél sur https://oauth.telegram.org/auth?bot_id=532954550&origin=http%3A%2F%2Fwww.audiovie.org&request_access=write
  4. On reçoit un message de Telegram qui dit:
    <prénom> we received a request to log in on www.audiovie.org with your Telegram account.
    To authorize this request, tap the 'Confirm' button below. 
    Browser: Chrome on Windows
    IP: 185.24.184.194 (Ile-de-France, France)
    If you didn't request this, tap 'Decline' or ignore this message.
    
  5. On reçoit deux cookies longue durée (1 an) de https://oauth.telegram.org stel_ssid et stel_token avec un hash d'authentification (supprimer ces cookies => log out = repartir de zéro)
  6. On reçoit un cookie (12h) stel_ssid de https://audiovie.org (domain: t.me)
  7. La fonction de callback définie dans attribut data-onauth de la balise SCRIPT de la page d'origine est appelée avec objet "user" en paramètre (dans exemple c'est onTelegramAuth(user)
  8. On a les valeurs suivantes dans objet "user":

Login PHP

  1. on lance une page protégée par exemple login.php
  2. cette page contient le même appel au script JavaScript mais avec data-auth-url="login_checkAuthorization.php" à la place du data-onauth
  3. on entre son tél sur https://oauth.telegram.org/auth?bot_id=532954550&origin=http%3A%2F%2Fwww.audiovie.org&request_access=write&lang=fr
  4. On reçoit un message de Telegram qui dit:
    <prénom> we received a request to log in on www.audiovie.org with your Telegram account.
    To authorize this request, tap the 'Confirm' button below. 
    Browser: Chrome on Windows
    IP: 185.24.184.194 (Ile-de-France, France)
    If you didn't request this, tap 'Decline' or ignore this message.
    
  5. La vérification du hash se fait par script PHP indiqué dans data-auth-url, il reçoit les infos dans la QueryString (objet $_GET[])
  6. Le script PHP inscrit un Cookie de session: tg_user valable pour le répertoire courant (path: /data-telegram/php/) {"id":"363399447","first_name":"Sylviane","last_name":"Oddon","username":"Sylv0504","photo_url":"https://t.me/i/userpic/320/Sylv0504.jpg","auth_date":"1528793409"}
  7. On peut vérifier si on est connecté en lisant la valeur du cookie tg_user
  8. On a les valeurs suivantes: