Spotify를 예로 들어 OAuth의 작업 원리를 설명하다

당신은 OAuth가 무엇인지, 어떻게 작동하는지, 그리고 왜 많든 적든 유행하는 사이트가 그것을 실현했는지 생각해 본 적이 있습니까?본고에서 우리는 이러한 문제점을 연구하고 Python으로 코드를 작성하여 OAuth와 Spotify를 결합하여 사용할 것이다.

이게 어떻게 된 일입니까?


OAuth는

OAuth is an open standard for access delegation, commonly used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords.


논리적으로 들린다.Spotify를 사용하여 보다 구체화할 수 있습니다.

OAuth is commonly used as a way for Internet users to grant websites or applications (your website or application) access to their information (like their favorite artists, or ability to add a new artist to favorites) on other websites (Spotify) but without giving them the passwords.


그리고 하나 더.'OAuth는 개방적인 기준'이다. 이는 OAuth를 실현하는 다른 모든 사이트(예를 들어 페이스북, 트위터)에 같은 역할을 한다는 것을 의미한다.

위키백과 작업 원리


고위층에서, 사용자(클라이언트라고도 하고, OAuth의 사이트를 공급자라고 부른다)는 사용자의 접근 영패(본질적으로 비밀번호)를 얻을 수 있으며, 이 영패가 있으면 이른바'범위'에 열거된 모든 접근을 사용할 수 있습니다.
  • 사용자는 권한을 요청하는 공급업체 사이트의 링크를 클릭합니다
  • 사용자가 권한 부여 화면을 보았다
  • 사용자의 범위 수용
  • 액세스 토큰
  • 을 사용하여 사용자를 "URL로 재지정"
  • 현재 영패
  • 에 접근하여 필요한 데이터를 요청할 수 있습니다
    하지만 우리는 무엇을 해야만 그것을 발휘하게 할 수 있습니까?

    클라이언트 응용 프로그램 만들기


    우선, 클라이언트 응용 프로그램을 만들어야 합니다.그 주요 목적은 4단계에서 사용자를 어디로 바꾸는지 아는 것이다.
    클라이언트 프로그램의 또 다른 목적은 2단계 인증 화면에 항목의 이름과 간략한 설명을 표시하는 것이다.
    구글에서'# {PROVIDER\u NAME}oauth 앱'과 같은 검색으로 이 작업을 완성할 수 있는 곳을 찾을 수 있다.

    공급자에 대한 링크 만들기


    우선, 링크를 만드는 방법을 찾아야 합니다.구글은 다시 우리를 도울 수 있다.구글 "#{PROVIDER\u NAME}oauth URL"만 있으면 됩니다.공급업체로부터 유사한 공식 문서의 내용을 찾을 수 있을 것입니다.
    링크를 구성하는 방법을 찾으면 다음과 같은 몇 가지 매개 변수가 필요할 수 있습니다.
  • client_id - 공급자가 사용자를 어디로 리디렉션할지 알 수 있도록 클라이언트 응용 프로그램의 식별자
  • redirect_uri - 유명한 리디렉션 URL(제공자는 클라이언트 응용 프로그램에서 지정한 URL을 사용할 수 있지만 일반적으로 여러 개의 URL을 입력할 수 있습니다. 이 매개 변수는 설명에 사용됩니다)
  • scope - 프로젝트에 필요한 액세스 목록(공식 문서에서 범위를 찾을 수 있습니다).
  • 상술한 매개 변수의 정확한 명칭은 공식 문서를 참조하십시오.
    나는 내가 반드시 나의 사례에서 무엇을 구축해야 하는지 보여줄 것이다.범위에 관해서는 user-read-emailuser-follow-read 사용자의 전자메일과 그 후속 내용을 읽어야 합니다.우선 서버에서 실행되는 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'
    

    URL 방향을 바꾸는 끝 만들기


    4단계에서 사용자는 URL로 리디렉션됩니다.이 URL은 사용자 정보가 포함된 액세스 토큰입니다.
    공급자에 대한 링크를 만들 때 리디렉션 URL로 'http://127.0.0.1:5000/spotify/callback' 를 사용합니다.이 링크는 귀하가 가지고 있는 모든 서버의 단점을 가리켜야 합니다.
    다음은 예시입니다. 어떻게 플라스크에 단점을 설정합니까
    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/spotify/callback")
    def spotify_callback():
        return "You finally called me back!"
    
    방금 만든 리셋에서 사용자의 데이터에 대해 모든 작업을 수행할 수 있습니다.프로젝트에 사용자의 개인 정보를 만들어서 이메일이나 다른 것을 보낼 수 있습니다.단, 나중에 이 사용자로부터 더 많은 데이터를 얻기를 원한다면, 요청한 영패를 데이터베이스에 저장하는 것이 좋습니다.

    빠르다 작동 여부를 테스트합니다.



    현재 접근 영패를 받았습니다. 범위에서 요청한 작업을 수행할 수 있습니다.
    나는 이미 를 요청했기 때문에 현재 나는 사용자가 주목하는 예술가 user-follow-read 를 읽을 수 있다.Spotifynotify when a new album comes out는 사용자의 관심을 얻을 수 있는 예술가이기 때문에 사용합시다
    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)
    
    최신 앨범을 어떻게 얻는지에 대한 정보를 더 알고 싶으면 an endpoint 를 읽으세요.

    나의 이전 문장 새로 고침 영패도 저장합니다


    불행하게도 방문 영패는 통상적으로 기한이 지나간다.다행히도, 우리는 요청 영패에 첨부된 리셋 영패를 사용하여 새로운 것을 요청할 수 있다.
    액세스 영패가 만료되면 새로 고침 영패가 있는 요청을 문서에 지정된 노드로 보내야 합니다.우리는 파이썬의 라이브러리를 사용하여 이 점을 실현할 수 있다
    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()
    
    requests.
    URL(가능한 다른 필수 매개 변수)은 공식 문서에서 다시 찾아야 합니다.

    출처 왜 모든 사람이 OAuth를 실현합니까?


    이것은 최종 사용자에게 매우 편리하다.OAuth는 사용자로부터 비밀번호나 가짜 계정을 만드는 부담을 지고 개발자에게 맡겼다.하지만 이제는 어떤 공급업체든 사용자 데이터의 힘을 충분히 이용하는 것이 어렵지 않다.

    자전거를 발명하지 마라



    거의 네가 직면한 모든 문제에는 기존의 해결 방안이 있다.자전거를 발명하기 전에 반드시 구글로 검색해야 한다.인증이 필요한 경우 이(가) 이미 있습니다.예를 들어 Spotify의 API를 사용해야 하는 API가 필요하다면 있습니다.
    만약 당신이 OAuth를 더욱 깊이 있게 읽고 싶다면, libraries for that 는 매우 쉽게 읽을 수 있는 형식으로 작성된 모든 내용을 포함할 수 있다.
    이 밖에 libraries for that too에 관한 시리즈의 네 번째 부분이다.5부분을 계속 지켜봐 주세요.너는 나의 an official guide 에서 MuN 및 나의 다른 항목을 찾을 수 있다.아래에 당신의 평론을 남겨 주십시오. 만약 당신이 이 문장을 좋아한다면 저를 따라오세요.

    좋은 웹페이지 즐겨찾기