Вы когда-нибудь задумывались, что такое OAUTH, как это работает, и почему на любой более или менее популярный веб-сайт реализует его? В этой статье мы рассмотрим эти вопросы и напишем код в Python, чтобы использовать OAUTH с Spotify.
По словам Википедия ОАУТ
OAUTH – это открытый стандарт для делегации доступа, обычно используемый в качестве способа для пользователей Интернета для предоставления веб-сайтов или приложений доступа к своей информации на других веб-сайтах, но не предоставив им пароли.
Звучит довольно логично. Давайте использовать Spotify, чтобы сделать его более конкретным.
OAUTH обычно используется в качестве способа для пользователей Интернета, чтобы предоставить сайты или приложения (Ваш сайт или приложение) Доступ к их информации (Мне нравится их любимые художники или Умение добавить нового художника в избранное ) на Другие сайты ( Spotify ) Но не предоставив им пароли.
Еще кое-что. ” ОАУТ – это Открытый стандарт «Это означает, что он собирается работать о том же для всех других веб-сайтов (например, Facebook, Twitter), которые реализуют ОАУТ.
На высоком уровне вы (также называемые клиент , а сайт, который вы пытаетесь auth с именем поставщик ), получите пользователя Токен доступа (Что по существу является паролем) и с ним вы можете использовать все доступ к тому, что вы перечислили в так называемом « область охвата ».
- Пользователь нажимает на ссылку на веб-сайт провайдера, который будет запросить авторизацию
- Пользователь видит экран авторизации
- Пользователь принимает ваш объем
- Пользователь перенаправляется на «URL-адрес перенаправления» с токеном доступа
- Теперь вы можете сделать запросы на данные, которые вам нужны с токеном доступа
Но что нам нужно сделать это работать?
Прежде всего, вам нужно создать «клиентское приложение». Его основная цель – знать, где перенаправить пользователя на шаге № 4.
Другая цель клиентского приложения – показать название и краткое описание вашего проекта на экране авторизации на шаге № 2.
Вы можете Google найти место, где сделать это с помощью чего-то вроде «# {provider_name} auth auth».
Во-первых, вам нужно найти, как построить ссылку. Google может помочь нам снова. Просто Google “# {provider_name} oauth url”. Вы должны найти что-то вроде официальной документации у провайдера.
Как только мы нашли, как создать ссылку, вам скорее всего, нужно будет использовать параметры пара в нем:
-
ID клиента
— идентификатор вашего клиента приложения, чтобы поставщик знал, где перенаправить пользователя Redirect_uri
– Знаменитый URL-адрес Redirect (поставщик может использовать указанный в приложении клиента, но обычно вы можете ввести несколько URL, и этот параметр для разъяснения)Область
– список доступов, которые требуют вашего проекта (вы можете найти область в официальной документации).
Пожалуйста, обратитесь к официальной документации для точных названий, перечисленных выше.
Я покажу, что мне придется построить в моем случае. Что касается объема, мне нужно Пользовательская чтение-электронная почта
и Пользовательский следующий
Читать электронную почту пользователя и то, что они следуют. Чтобы начать, я бы указывал на URL, где работает сервер
provider_url = "https://accounts.spotify.com/authorize" from urllib.parse import urlencode params = urlencode({ 'client_id': 'MY_CLIENT_ID', 'scope': ['user-read-email', 'user-follow-read'], 'redirect_uri': 'http://127.0.0.1:5000/spotify/callback', 'response_type': 'code' }) url = provider_url + '?' + params url # => 'https://accounts.spotify.com/authorize?client_id=MY_CLIENT_ID&scope=%5B%27user-read-email%27%2C+%27user-follow-read%27%5D&redirect_uri=http%3A%2F%2F127.0.0.1%3A5000%2Fspotify%2Fcallback&response_type=code'
На этапе № 4 пользователь перенаправляется на URL-адрес перенаправления. Этот URL – это то, куда придет токен доступа с информацией пользователя.
Когда я строю свою ссылку на провайдер, я использовал 'http://127.0.0.1:5000/spotify/callback'
как перенаправленный URL. Эта ссылка должна указывать на конечную точку на том, что у вас есть сервер.
Вот a быстрый Пример Как настроить конечную точку в колбе
from flask import Flask app = Flask(__name__) @app.route("/spotify/callback") def spotify_callback(): return "You finally called me back!"
В обратном вызова вы только что создали, вы можете делать все, что вы хотите с данными пользователя. Вы можете создать профиль пользователя в вашем проекте, отправить ему электронное письмо или что-то еще. Но если вы хотите получить больше данных от этого пользователя позже, лучше сохранить токен, который поставляется с запросом в вашу базу данных.
Теперь, когда вы получили токен доступа, вы можете сделать то, что вы запросили в объеме.
Я просил Пользовательский следующий
Так что теперь я могу прочитать, какие художники пользователь подходит к Уведомить, когда выходит новый альбом . Spotify имеет конечная точка чтобы получить пользовательские артисты, так что давайте просто использовать его
artists = [] all_artists_loaded = False limit = 50 access_token = fetch_access_token() # your function to pull the token # from the place where you saved it url = f"https://api.spotify.com/v1/me/following?type=artist&limit={limit}&access_token={access_token}" while not all_artists_loaded: response = requests.get(url).json()['artists'] current_request_artists = response['items'] artists += current_request_artists if response['next']: url = response['next'] + f"&access_token={access_token}" else: all_artists_loaded = True print(artists)
Если вы хотите больше информации о том, как извлечь последние альбомы, которые вы можете прочитать Моя предыдущая статья Отказ
К сожалению, токен доступа обычно истекает. Но, к счастью, мы можем запросить новый токен обновления, который поставляется с токеном запроса.
После того, как токен доступа истек, вам необходимо отправить запрос с токеном обновления на конечную точку, указанную в документах. Мы можем сделать это с Запросы Библиотека в Питоне
refresh_token = pull_refresh_token() # your function to pull the token # from the place where you saved it client_id = "YOUR_CLIENT_ID" # that you received once you created # the Client Application client_secret = "YOUR_CLIENT_SECRET" # that you received once you created # the Client Application too refresh_url = "https://accounts.spotify.com/api/token" # from the docs payload = { 'refresh_token': refresh_token, 'grant_type': 'refresh_token' } auth_header = base64.b64encode(six.text_type(client_id + ':' + client_secret).encode('ascii')) headers = {'Authorization': 'Basic %s' % auth_header.decode('ascii')} response = requests.post(refresh_url, data=payload, headers=headers) token_info = response.json()
Источник кода выше.
URL (а также возможные другие обязательные параметры) должны быть, еще раз, найден в официальной документации.
Это просто удобно для конечного пользователя. OAuth берет нагрузку на создание паролей или поддельных учетных записей от пользователей и помещает его на разработчиков. Но теперь вам не должно быть слишком сложно использовать любой провайдер и использовать полную мощность данных пользователей.
Всегда есть существующие решения практически любые проблемы, с которыми вы сталкиваетесь. Всегда убедитесь, что Google перед изобретением велосипеда. Если вам нужна аутентификация, вы уже есть библиотеки для этого Отказ Если вам нужно получить доступ к нескольким API, например, необходимо использовать Spotify’s, есть библиотеки для этого тоже Отказ
Если бы вы хотели прочитать о Оате более подробно, есть Официальное руководство Это охватывает, вероятно, все написано очень легко читать форму.
Кроме того, это четвертая часть серии статей о MUN Отказ Оставайтесь настроиться на часть 5. Вы можете найти Кодекс этого проекта , а также моих других проектов, на моем Страница GitHub Отказ Оставьте свои комментарии ниже и следуйте за мной, если вам понравилась эта статья.
Оригинал: “https://dev.to/hmlon/explaining-how-oauth-works-with-spotify-as-an-example-5djl”