Рубрики
Без рубрики

Объясняя, как ОАУТ работает с Spotify в качестве примера

Вы когда-нибудь задумывались, что такое OAUTH, как это работает, и почему еще один или менее популярный сайт реализует его? Теги от объяснений, Python, начинающие, Оат.

Вы когда-нибудь задумывались, что такое OAUTH, как это работает, и почему на любой более или менее популярный веб-сайт реализует его? В этой статье мы рассмотрим эти вопросы и напишем код в Python, чтобы использовать OAUTH с Spotify.

По словам Википедия ОАУТ

OAUTH – это открытый стандарт для делегации доступа, обычно используемый в качестве способа для пользователей Интернета для предоставления веб-сайтов или приложений доступа к своей информации на других веб-сайтах, но не предоставив им пароли.

Звучит довольно логично. Давайте использовать Spotify, чтобы сделать его более конкретным.

OAUTH обычно используется в качестве способа для пользователей Интернета, чтобы предоставить сайты или приложения (Ваш сайт или приложение) Доступ к их информации (Мне нравится их любимые художники или Умение добавить нового художника в избранное ) на Другие сайты ( Spotify ) Но не предоставив им пароли.

Еще кое-что. ” ОАУТ – это Открытый стандарт «Это означает, что он собирается работать о том же для всех других веб-сайтов (например, Facebook, Twitter), которые реализуют ОАУТ.

На высоком уровне вы (также называемые клиент , а сайт, который вы пытаетесь auth с именем поставщик ), получите пользователя Токен доступа (Что по существу является паролем) и с ним вы можете использовать все доступ к тому, что вы перечислили в так называемом « область охвата ».

  1. Пользователь нажимает на ссылку на веб-сайт провайдера, который будет запросить авторизацию
  2. Пользователь видит экран авторизации
  1. Пользователь принимает ваш объем
  2. Пользователь перенаправляется на «URL-адрес перенаправления» с токеном доступа
  3. Теперь вы можете сделать запросы на данные, которые вам нужны с токеном доступа

Но что нам нужно сделать это работать?

Прежде всего, вам нужно создать «клиентское приложение». Его основная цель – знать, где перенаправить пользователя на шаге № 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”