Я использую django-allauth для аутентификации пользователей (использует API Patreon v1 ), который добавляет json в базу данных с информацией ниже. Я хотел бы показать дополнительный контент на сайте, если залог пользователя соответствует определенному уровню (или выше).
{
"attributes": {
"about": null,
"can_see_nsfw": true,
"created": "2019-05-20T20:29:02.000+00:00",
"default_country_code": null,
"discord_id": null,
"email": "admin@email.com",
"facebook": null,
"facebook_id": null,
"first_name": "Adm",
"full_name": "Adm Nsm",
"gender": 0,
"has_password": true,
"image_url": "https://c8.patreon.com/2/200/21383296",
"is_deleted": false,
"is_email_verified": false,
"is_nuked": false,
"is_suspended": false,
"last_name": "Nsm",
"social_connections": {
"deviantart": null,
"discord": null,
"facebook": null,
"instagram": null,
"reddit": null,
"spotify": null,
"twitch": null,
"twitter": null,
"youtube": null
},
"thumb_url": "https://c8.patreon.com/2/200/21383296",
"twitch": null,
"twitter": null,
"url": "https://www.patreon.com/user?u=21383296",
"vanity": null,
"youtube": null
},
"id": "21383296",
"relationships": {
"pledges": {
"data": [
{
"id": "24461189",
"type": "pledge"
}
]
}
},
"type": "user"
}
Вначале я думал, что Relationss.pledges.data.id будет иметь идентификатор текущего уровня, и с этим мне удалось добавить дополнительный блок контента для конкретного пользователя, но, видимо, это было лишь желаемое за действительное; после тестирования со вторым аккаунтом ID, который я хотя и был уровнем залога, кажется, каждый раз отличается. Я полагаю, что мне, возможно, потребуется запросить дополнительную информацию у API Патреона , но я не уверен, как вернуть то, что мне нужно.
EDIT:
Из того, что я могу собрать, мне нужно было бы запросить текущее_должение_tiers у / api / oauth2 / v2 / members / {id}
Проблема в том, что требуемый идентификатор не совпадает с идентификатором, который я получаю после входа пользователя в систему. Поэтому мне сначала нужно будет использовать созданный токен доступа oauth и GET / api / oauth2 / v2 / идентификационный номер для длинного идентификационного номера.
Моя текущая проблема заключается в том, что когда я пытаюсь получить идентификатор из / api / oauth2 / v2 / identity, я получаю код ошибки 401:
<Response [401]>
{'errors': [{'code': 1, 'code_name': 'Unauthorized', 'detail': "The server could not verify that you are authorized to access the URL requested. You either supplied the wrong credentia
ls (e.g. a bad password), or your browser doesn't understand how to supply the credentials required.", 'id': 'b298d8b1-73db-46ab-b3f4-545e6f934599', 'status': '401', 'title': 'Unauthori
zed'}]}
Я отправляю:
headers = {"authorization": "Bearer " + str(access_token)} # User's Access Token
req = requests.get("https://patreon.com/api/oauth2/v2/identity?include=memberships", headers=headers)
Если я получу правильный идентификатор через / api / oauth2 / v2 / campaigns / {campaign_id} / members Я могу запросить у / api / oauth2 / v2 / members / {id} и получите то, что мне нужно, но этот средний шаг, использующий вошедшего в систему пользователя, чтобы получить его ID, ускользает от меня.
Спасибо.