通过二维码登录

二维码登录流程。

相关目标语言模式:

auth.loginToken#629f1980 expires:int token:bytes = auth.LoginToken; auth.loginTokenMigrateTo#68e9916 dc_id:int token:bytes = auth.LoginToken; auth.loginTokenSuccess#390d5c5e authorization:auth.Authorization = auth.LoginToken; updateLoginToken#564fe691 = Update; authorization#ad01d61d flags:# current:flags.0?true official_app:flags.1?true password_pending:flags.2?true encrypted_requests_disabled:flags.3?true call_requests_disabled:flags.4?true unconfirmed:flags.5?true hash:long device_model:string platform:string system_version:string api_id:int app_name:string app_version:string date_created:int date_active:int ip:string country:string region:string = Authorization; ---functions--- auth.exportLoginToken#b7e085fe api_id:int api_hash:string except_ids:Vector<long> = auth.LoginToken; auth.acceptLoginToken#e894ad4d token:bytes = Authorization; auth.importLoginToken#95ac5ce4 token:bytes = auth.LoginToken;

导出登录令牌

首先,想要登录现有Telegram账户的应用必须调用auth.exportLoginToken。
该方法会返回一个 auth.loginToken 构造器,包含二进制登录和一个有效期(通常为 30 秒)。token

登录必须使用base64url编码,嵌入URL中,并以二维码的形式向用户展示。当前二维码过期
后,必须调用 auth.exportLoginToken 方法,并自动生成新的二维码。tokentg://login?token=base64encodedtoken

接受登录令牌

登录时,必须通过已登录的Telegram应用通过auth.acceptLoginToken扫描二维码并接受二维码。
在使用该方法之前,必须先从URI中提取并对base64url进行解码。tg://login

该方法可能返回的错误有:

该方法会返回一个授权对象,包含我们刚刚授权的应用和会话的信息。

确认(导入)登录令牌

登录应用调用 auth.acceptLoginToken 并接受登录令牌后,尝试登录的应用会收到 updateLoginToken 更新,这应该会触发第二次调用 auth.exportLoginToken 方法。

第二次调用应返回auth.loginTokenSuccess构造子,表示登录成功,本质上允许对API进行进一步授权交互。

但如果两个应用之间存在 DC 不匹配,则返回 auth.loginTokenMigrateTo,尝试登录的应用应通过调用指定的 auth.importLoginToken 到 指定 DC。token

此调用最终应返回 auth.loginTokenSuccess 构造子。