반응형
spotify 가입후 dashboard에들어가서 api id, secret key를 획득하자
https://developer.spotify.com/dashboard/applications
https://developer.spotify.com/documentation/general/guides/authorization-guide/
인증방식에는 app, user 방식이 있는데 나는 app 방식으로 했다.
app은 내 앱으로 접근 하는거고 user는 oauth 방식으로 접근하는 방식이다.
api에 필요한걸 보면 grant_type와 authorization이 필요하다고 한다.
이것이 통신이 되는지 id와 secret 값을 넣어 post 방식으로 코딩해보았다
import sys
import requests
import base64
import json
import logging
client_id = "spotify id를 넣는다"
client_secret = "spotify secret을 넣는다"
def main():
endpoint = "https://accounts.spotify.com/api/token" ## 토큰 받아옴
encoded = base64.b64encode("{}:{}".format(client_id, client_secret).encode('utf-8')).decode('ascii') ## id ,secret 인코딩
headers = {
"Authorization": "Basic {}".format(encoded)
}
payload = {
"grant_type": "client_credentials"
}
r = requests.post(endpoint, data=payload, headers=headers)
print(r.status_code) ## 에러 코드
print(r.text) ## 내용물
sys.exit(0) ##중간에 끊어서 보기 위함
헤더에 필요한 값을 넣고 parameter로 bts 관련 정보를 넣어 get 방식으로 출력해보자
def main():
headers = get_headers(client_id, client_secret)
print(headers)
sys.exit(0)
params = {
"q": "BTS",
"type": "artist",
"limit": "5"
}
def get_headers(client_id, client_secret):
endpoint = "https://accounts.spotify.com/api/token" ## 토큰 받아옴
encoded = base64.b64encode("{}:{}".format(client_id, client_secret).encode('utf-8')).decode('ascii') ## id ,secret 인코딩
headers = {
"Authorization": "Basic {}".format(encoded)
}
payload = {
"grant_type": "client_credentials"
}
r = requests.post(endpoint, data=payload, headers=headers)
access_token = json.loads(r.text)['access_token']
## 위에서 받아온 r이 str 타입이라 이걸 dictionary 형태로 바꾼다.
headers = {
"Authorization": "Bearer {}".format(access_token)
}
return headers
if __name__=='__main__':
main()
위와 마찬가지로 출력이 잘되는것을 볼수 있다.
반응형
'DATA Science > DataEngineering' 카테고리의 다른 글
mysql window cmd에서 실행 및 aws 로 접속 (0) | 2021.06.23 |
---|---|
에러 핸들링 (0) | 2021.06.23 |
AWS cli 설치 및 설정(profile 설정하여 관리) (0) | 2021.06.22 |
엔드 투 엔드 아키텍처 예시 (0) | 2021.06.21 |
데이터 파이프라인 (0) | 2021.06.21 |
댓글