# Яндекс ID (OAuth) API
Библиотека для работы с API Яндекс ID (OAuth) для Python 3.10+.
Поддерживает асинхронную работу.
[Документация API](https://yandex.ru/dev/id/doc/dg/index.html)
## Установка
1. С помощью pip:
```bash
pip install yandexid
```
2. С помощью pip+git:
```bash
pip install https://github.com/LulzLoL231/yandexid.git
```
3. Из исходников:
```bash
git clone https://github.com/LulzLoL231/yandexid
pip install ./yandexid
```
## Пример использования
1. Получение OAuth токена:
```python
from yandexid import YandexOAuth
yandex_oauth = YandexOAuth(
client_id='<client_id>',
client_secret='<client_secret>',
redirect_uri='<redirect_uri>'
)
auth_url = yandex_oauth.get_authorization_url()
# Тут нужно перейти по ссылке auth_url и получить код авторизации
token = yandex_oauth.get_token_from_code('<code>')
```
Возвращает объект `Token` с информацией о OAuth токене. Формат объекта совпадает с [форматом ответа из API Яндекс ID](https://yandex.ru/dev/id/doc/dg/oauth/reference/console-client.html#console-client__token-body-title).
2. Получение информации о пользователе:
```python
from yandexid import YandexID
yandex_id = YandexID('<oauth_token>')
user_info = yandex_id.get_user_info_json()
```
Возвращает объект `User` с информацией о пользователе. Формат объекта совпадает с [форматом ответа из API Яндекс ID](https://yandex.ru/dev/id/doc/dg/api-id/reference/response.html).
## Асинхронная работа
Чтобы использовать асинхронность, используйте классы `AsyncYandexOAuth` и `AsyncYandexID`:
```python
from yandexid import AsyncYandexID
yandex_id = AsyncYandexID('<oauth_token>')
user_info = await yandex_id.get_user_info_json()
```
Название методов полностью совпадает с названием синхронных методов, не забывайте использовать `await` перед вызовом асинхронных методов.
Логотипы Яндекс ID и название сервиса "Яндекс ID" принадлежат Яндексу.
Raw data
{
"_id": null,
"home_page": "https://github.com/LulzLoL231/yandexid",
"name": "yandexid",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.10,<4.0",
"maintainer_email": "",
"keywords": "yandex,oauth,api,wrapper,yandexid,yandex-id",
"author": "Maxim Mosin",
"author_email": "max@mosin.pw",
"download_url": "https://files.pythonhosted.org/packages/37/b8/754fc6569065dbdb37d31fe8abc9a492fb77cf739b1eff4aebcdd4288e31/yandexid-0.3.1.tar.gz",
"platform": null,
"description": "# \u042f\u043d\u0434\u0435\u043a\u0441 ID (OAuth) API\n\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API \u042f\u043d\u0434\u0435\u043a\u0441 ID (OAuth) \u0434\u043b\u044f Python 3.10+.\n\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443.\n\n[\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f API](https://yandex.ru/dev/id/doc/dg/index.html)\n\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n1. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e pip:\n \n ```bash\n pip install yandexid\n ```\n\n2. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e pip+git:\n \n ```bash\n pip install https://github.com/LulzLoL231/yandexid.git\n ```\n\n3. \u0418\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432:\n\n ```bash\n git clone https://github.com/LulzLoL231/yandexid\n pip install ./yandexid\n ```\n\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n\n1. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 OAuth \u0442\u043e\u043a\u0435\u043d\u0430:\n\n ```python\n from yandexid import YandexOAuth\n\n yandex_oauth = YandexOAuth(\n client_id='<client_id>',\n client_secret='<client_secret>',\n redirect_uri='<redirect_uri>'\n )\n auth_url = yandex_oauth.get_authorization_url()\n # \u0422\u0443\u0442 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0439\u0442\u0438 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 auth_url \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u0434 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438\n token = yandex_oauth.get_token_from_code('<code>')\n ```\n \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 `Token` \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e OAuth \u0442\u043e\u043a\u0435\u043d\u0435. \u0424\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 [\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0430 \u0438\u0437 API \u042f\u043d\u0434\u0435\u043a\u0441 ID](https://yandex.ru/dev/id/doc/dg/oauth/reference/console-client.html#console-client__token-body-title).\n\n\n2. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435:\n\n ```python\n from yandexid import YandexID\n\n yandex_id = YandexID('<oauth_token>')\n user_info = yandex_id.get_user_info_json()\n ```\n \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u043a\u0442 `User` \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435. \u0424\u043e\u0440\u043c\u0430\u0442 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 [\u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c \u043e\u0442\u0432\u0435\u0442\u0430 \u0438\u0437 API \u042f\u043d\u0434\u0435\u043a\u0441 ID](https://yandex.ru/dev/id/doc/dg/api-id/reference/response.html).\n\n## \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\n\u0427\u0442\u043e\u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0441\u0442\u044c, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0441\u0441\u044b `AsyncYandexOAuth` \u0438 `AsyncYandexID`:\n\n```python\nfrom yandexid import AsyncYandexID\n\nyandex_id = AsyncYandexID('<oauth_token>')\nuser_info = await yandex_id.get_user_info_json()\n```\n\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c `await` \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432.\n\n\u041b\u043e\u0433\u043e\u0442\u0438\u043f\u044b \u042f\u043d\u0434\u0435\u043a\u0441 ID \u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \"\u042f\u043d\u0434\u0435\u043a\u0441 ID\" \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442 \u042f\u043d\u0434\u0435\u043a\u0441\u0443.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Yandex ID oauth API wrapper",
"version": "0.3.1",
"split_keywords": [
"yandex",
"oauth",
"api",
"wrapper",
"yandexid",
"yandex-id"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c2e781170766cd29a2360dffb5a415b83f170a05b2828153384fac0a6350572a",
"md5": "be4f76501d53009da0e7eb7f5e6f9948",
"sha256": "72639cc01a1885b8ee99c9534883325b9d09b5e6fdb7dd91362ac75154b6902b"
},
"downloads": -1,
"filename": "yandexid-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "be4f76501d53009da0e7eb7f5e6f9948",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10,<4.0",
"size": 15641,
"upload_time": "2023-01-24T16:58:38",
"upload_time_iso_8601": "2023-01-24T16:58:38.074227Z",
"url": "https://files.pythonhosted.org/packages/c2/e7/81170766cd29a2360dffb5a415b83f170a05b2828153384fac0a6350572a/yandexid-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "37b8754fc6569065dbdb37d31fe8abc9a492fb77cf739b1eff4aebcdd4288e31",
"md5": "7dee5f1df51083ca7c702994eaf5b318",
"sha256": "5328f18dc6678c72dabf5045e6763f29d194fcc225a35e448dbe04d308c7998e"
},
"downloads": -1,
"filename": "yandexid-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "7dee5f1df51083ca7c702994eaf5b318",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10,<4.0",
"size": 10382,
"upload_time": "2023-01-24T16:58:39",
"upload_time_iso_8601": "2023-01-24T16:58:39.234291Z",
"url": "https://files.pythonhosted.org/packages/37/b8/754fc6569065dbdb37d31fe8abc9a492fb77cf739b1eff4aebcdd4288e31/yandexid-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-24 16:58:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "LulzLoL231",
"github_project": "yandexid",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "yandexid"
}