Вход с кодом авторизации OAuth2.0

WeChat Alipay

Основной процесс

  1. Получить код авторизацииcode
  2. Получить токен доступа с кодом авторизацииaccess_token
  3. Получить информацию о пользователе через токен доступа (используется для регистрации нового пользователя, когда пользователь не существует)

WeChat

Авторизация пользователя на платформе WeChatРежим кода авторизации OAuth2.0 (authorization_code)

Получить код авторизации

Основное различие между каждым процессом заключается в способе получения кода.

  • Вход в мобильное приложениеПолучите код через клиент SDK
  • Вход на сайт приложения, получить код через обратный вызов авторизационной ссылки (open.WeChat.QQ.com/connect/ Но так...)
  • JS вход в приложение для сайта, встроить QR-код входа в WeChat на свою страницу, а пользователь использует WeChat для сканирования кода для авторизации и возвращает код на сайт через JS
  • Авторизация на официальной странице аккаунта, получить код через обратный вызов авторизационной ссылки (открытый микроканал .QQ.com / подключение / OA U ...)

интерфейс

// 网站应用获取授权码
https://open.weixin.qq.com/connect/qrconnect?appid=[x]&redirect_uri=[x]&scope=[x]&state=[x]&response_type=code#wechat_redirect

// 公众号网页获取授权码 - 此接口仅能在微信客户端调用
https://open.weixin.qq.com/connect/oauth2/authorize?appid=[x]&redirect_uri=[x]&scope=[x]&state=[x]&response_type=code#wechat_redirect

// 获取访问令牌
https://api.weixin.qq.com/sns/oauth2/access_token?appid=[x]&secret=[x]&code=[x]&grant_type=authorization_code

// 获取用户信息
https://api.weixin.qq.com/sns/userinfo?access_token=[x]&openid=[x]&lang=zh_CN

Процесс авторизации официальной учетной записи на веб-странице

  1. По тихой авторизации (scope=snsapi_base)Получатьcode, затем получитьaccess_token/union_id/open_id
  2. попробуй пройтиunion_id/open_idПолучить пользователя, если он существует, перенаправить на целевую страницу
  3. Если пользователь не существует, через немолчаливую авторизацию (scope=snsapi_userinfo)Получатьcode, а затем получить информацию о пользователе
  4. Зарегистрируйте нового пользователя с информацией о пользователе, затем перенаправьте на целевую страницу

процесс перенаправления страницы

JS вход в приложение для сайта

Вставьте QR-код входа в WeChat на свою страницу, и после того, как пользователь просканирует код с помощью WeChat для авторизации, код вернется на сайт через JS.

  1. Импорт JS-файловhttps://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js
  2. получить код
var obj = new WxLogin({
  self_redirect:true,
  id:"login_container", 
  appid: "", 
  scope: "", 
  redirect_uri: "",
  state: "",
  style: "",
  href: ""
});

значение объема

  • scope=snsapi_base, тихая авторизация, без получения информации о пользователе, то, что пользователь воспринимает, это прямой вход на страницу обратного вызова (бизнес-страницу)
  • scope=snsapi_userinfo, требует согласия пользователя вручную для получения информации о пользователе.
  • scope=snsapi_login для входа в приложение веб-сайта

Разрешитьaccess_tokenи обычныйaccess_token

  • Разрешитьaccess_tokenЧерез режим кода авторизации OAuth2.0 (grant_type=authorization_code) — это учетные данные пользовательского интерфейса доступа к прокси-серверу приложения, которые впоследствии можно использовать для получения основной информации о пользователе.
  • обычныйaccess_tokenПо режиму клиента OAUTH2.0 (grant_type=client_credential), используемый приложением для прямого доступа к интерфейсу

получить access_tokenDevelopers.WeChat.QQ.com/doc/off и ACC…

юнионид и опенид

Когда приложение не связано с открытой платформой, доступен только openid, а unionid доступен только после того, как приложение связано с открытой платформой.

  • unionidПользователь является единственной открытой платформой в UnionID той же учетной записи
  • openidOpenID пользователя отличается в разных приложениях

QQ

Авторизация входа пользователя на платформу QQ использует режим кода авторизации OAuth2.0 (authorization_code) Unionid и openid платформы QQ, механизм тот же, что и у WeChat

интерфейс

// QQ网站应用获取授权码 
https://graph.qq.com/oauth2.0/authorize?client_id=[x]&redirect_uri=[x]&scope=[x]&response_type=code

// 获取访问令牌
https://graph.qq.com/oauth2.0/token?client_id=[x]&client_secret=[x]&code=[x]&redirect_uri=[x]&grant_type=authorization_code&fmt=json

// 获取openid/unionid
https://graph.qq.com/oauth2.0/me?access_token=[x]&fmt=json

// 获取用户信息
https://graph.qq.com/user/get_user_info?access_token=[x]&oauth_consumer_key=[x]&openid=[x]&fmt=json

Для масштаба, пройтиget_user_infoВсе, никакой тихой авторизации

Alipay

Авторизация входа пользователя на каждой платформе Alipay использует режим кода авторизации OAuth2.0 (authorization_code) Alipay возвращает глобальный идентификатор пользователя Alipay (user_id), механизм unionid/openid не используется.

  • Вход в приложение AlipayПолучено через клиентский SDKauth_code
  • Авторизация номера жизниПолучено через обратный вызов ссылки авторизацииauth_code
  • Вход на сайт AlipayПолучено через обратный вызов ссылки авторизацииauth_code

интерфейс

// 网站应用/生活号 获取授权码 
https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=[x]&scope=[x]&redirect_uri=[x]&state=init 

// 获取访问令牌
`alipay.system.oauth.token` 

// 获取用户信息
`alipay.user.info.share`

значение объема

  • scope=auth_base, тихая авторизация, без получения информации о пользователе, то, что пользователь воспринимает, является прямым входом на страницу обратного вызова (бизнес-страницу)
  • scope=auth_user, требует, чтобы пользователь вручную согласился на получение информации о пользователе

Доуинь/Тутиао

Авторизация входа пользователя на платформу Douyin/Toutiao также использует режим кода авторизации OAuth2.0 (authorization_code) Unionid и openid платформы Douyin/Toutiao, механизм такой же, как у WeChat

интерфейс

// 网站应用获取授权码
https://open.douyin.com/platform/oauth/connect/

// 静默授权获取授权码 - 必须在抖音端内可以打开的h5页面调用才有效
https://aweme.snssdk.com/oauth/authorize/v2/

// 获取访问令牌
https://open.douyin.com/oauth/access_token

// 获取用户信息
https://open.douyin.com/platform/oauth/userinfo

значение объема

  • scope=login_id, тихая авторизация, информация о пользователе не получена, запрошенный интерфейс
  • scope=user_info, требуется согласие пользователя вручную для получения информации о пользователе.