파이썬 링크드인 linkedin API 키 발급하는 방법은 하기와 같다. 특히 링크드인은 다른 API와는 다르게 발급받는게 조금 까다롭게 만들어졌다. 먼저 링크드인 별도 페이지를 개설해야되며, 이에 차근차근 파이썬 으로 어떻게 API로 어떻게 만드는지를 알아보도록 하자.
파이썬 링크드인 linkedin API 키 발급
먼저 아래와 같이 사이트에 들어간다.
https://www.linkedin.com/developers/
맨 먼저 앱을 만드는것은 이제 기본이다. 앱을 만들자.
처음에는 앱 이름을 만들고, 이외 링크드인 페이지를 따로 만들어야된다. 처음이라는 어쩔수 없으니 링크드인 페이지를 만들도록 하자.
해당 페이지를 클릭하면 링크드인 페이지 개설이 나온다. 회사로 클릭하자.
이외 나는 다음과 같은 방식으로 작성되었다. 해당 원하는대로 작성하고 페이지 만들기를 최종 완료하면 된다.
그럼 다음과 같은 화면이 나오는데, 최종 확인한 이후에 동의합니다를 누르고 넘어간다.
그럼 다음과 같은 화면이 나오는데, 여기서 verify를 클릭해야된다.
해당 화면에서 generate URL 클릭 후 복사하고 브라우저에서 열자.
그럼 다음과 같은 화면이 나오는데, 마찬가지로 verify를 해서 넘어간다.
그럼 최종 완료되었다.
이제 마지막 페이지로 돌아가서 I'm done을 클릭하자.
그럼 마지막으로 verified라고 나오고 완료되었다는 문구가 나올것이다.
이후에 Auth에 가보면 Client ID 와 Client Secret 키가 보일 것이다. 해당 내용을 토대로 이제 파이썬에서 돌릴것이니 잘 기록해두자.
해당 내용을 credentials.json 파일을 통해 임의 폴더 디렉토리에 넣는다. 물론 하기의 내용과 함께 말이다.
{"client_id":"xxxxxxxxxxxxx",
"client_secret":"xxxxxxxxxxxxx",
"redirect_uri":"http://localhost:8888"}
제품으로 이동하여 "LinkedIn에서 공유", "LinkedIn으로 로그인" 및 "Marketing Developer Platform"에 대한 권한을 요청한다. 다만 마케팅 쪽은 권한이 제한적이라 파이썬으로 하는 API 기능이 다소 제한적일 수 있다는 부분이 있다.
파이썬 링크드인 linkedin API access Token 발급
이제 아래 파이썬 코딩을 돌린다. 먼저 credentials json 파일의 경로만 수정해주고 돌려주면 최초 인증에 따른 허용하기 등이 나올 것이다. 다 허용하기로 눌러 넘어가면 된다.
import json
import random
import requests
import string
def read_creds(filename):
'''
Store API credentials in a safe place.
If you use Git, make sure to add the file to .gitignore
'''
with open(filename) as f:
credentials = json.load(f)
return credentials
creds = read_creds('C:/Users/user/raw/linkedin/credentials.json') #json 파일주소
client_id, client_secret = creds['client_id'], creds['client_secret']
redirect_uri = creds['redirect_uri']
def create_CSRF_token():
'''
This function generates a random string of letters.
It is not required by the Linkedin API to use a CSRF token.
However, it is recommended to protect against cross-site request forgery
'''
letters = string.ascii_lowercase
token = ''.join(random.choice(letters) for i in range(20))
return token
api_url = 'https://www.linkedin.com/oauth/v2'
def authorize(api_url,client_id,client_secret,redirect_uri):
'''
Make a HTTP request to the authorization URL.
It will open the authentication URL.
Once authorized, it'll redirect to the redirect URI given.
The page will look like an error. but it is not.
You'll need to copy the redirected URL.
'''
# Request authentication URL
csrf_token = create_CSRF_token()
params = {
'response_type': 'code',
'client_id': client_id,
'redirect_uri': redirect_uri,
'state': csrf_token,
'scope': 'r_liteprofile,r_emailaddress,w_member_social'
}
response = requests.get(f'{api_url}/authorization',params=params)
print(f'''
The Browser will open to ask you to authorize the credentials.\n
Since we have not set up a server, you will get the error:\n
This site can’t be reached. localhost refused to connect.\n
This is normal.\n
You need to copy the URL where you are being redirected to.\n
''')
open_url(response.url)
# Get the authorization verifier code from the callback url
redirect_response = input('Paste the full redirect URL here:')
auth_code = parse_redirect_uri(redirect_response)
return auth_code
def open_url(url):
'''
Function to Open URL.
Used to open the authorization link
'''
import webbrowser
print(url)
webbrowser.open(url)
def parse_redirect_uri(redirect_response):
'''
Parse redirect response into components.
Extract the authorized token from the redirect uri.
'''
from urllib.parse import urlparse, parse_qs
url = urlparse(redirect_response)
url = parse_qs(url.query)
return url['code'][0]
def save_token(filename,data):
'''
Write token to credentials file.
'''
data = json.dumps(data, indent = 4)
with open(filename, 'w') as f:
f.write(data)
def headers(access_token):
'''
Make the headers to attach to the API call.
'''
headers = {
'Authorization': f'Bearer {access_token}',
'cache-control': 'no-cache',
'X-Restli-Protocol-Version': '2.0.0'
}
return headers
def auth(credentials):
'''
Run the Authentication.
If the access token exists, it will use it to skip browser auth.
If not, it will open the browser for you to authenticate.
You will have to manually paste the redirect URI in the prompt.
'''
creds = read_creds(credentials)
print(creds)
client_id, client_secret = creds['client_id'], creds['client_secret']
redirect_uri = creds['redirect_uri']
api_url = 'https://www.linkedin.com/oauth/v2'
if 'access_token' not in creds.keys():
args = client_id,client_secret,redirect_uri
auth_code = authorize(api_url,*args)
access_token = refresh_token(auth_code,*args)
creds.update({'access_token':access_token})
save_token(credentials,creds)
else:
access_token = creds['access_token']
return access_token
if __name__ == '__main__':
credentials = 'C:/Users/user/raw/linkedin/credentials.json' #json 파일주소
access_token = auth(credentials)
하기 URL을 치면 관련해서 허용할꺼냐는 내용이 나오는데, 전부다 허용해서 넘어가면 된다. 이후 최종적으로 파이썬 내부에 ?code = 변수 앞에 &state 사이에 액세스 토큰을 얻을 수 있다. 해당 토큰을 아까 credentials.json 파일 안에 넣으면 된다.
if __name__ == '__main__':
credentials = 'C:/Users/user/raw/linkedin/credentials.json' #json 파일주소
access_token = auth(credentials)
access 토큰을 credentials.json 파일에 저장해두고 넘어가면 된다.
{"client_id":"xxxxxxxxxxxxxxx",
"client_secret":"xxxxxxxxxxxxxxx",
"redirect_uri":"http://localhost:8888",
"access_token":"xxxxxxxxxxxxxxx"}
이후 이전에 말한 해당 인증 내용은 따로 파이썬 ln_oauth.py 파일로 저장해둔다. 다만 인증까지는 되나, 기타 get 및 post 등의 API 사용시엔 먹히질 않는 경우가 발생하고, 에러가 뜬다. 이는 보안사항으로 중점적으로 파헤쳐야될 것 같다.
'Python' 카테고리의 다른 글
[파이썬] 텍스트 내 키워드 추출 및 단어 빈도수 측정 (0) | 2022.06.26 |
---|---|
[파이썬] 유투브 API 검색 활용, 유투브 mp3 변환 및 다운로드 (0) | 2022.06.26 |
[python] 파이썬 셀레늄 selenium autoit 다운로드 설치 방법 (0) | 2022.06.21 |
[python] 파이썬 인스타그램 API 키 발급 및 이미지 포스팅 (1) | 2022.06.21 |
[Python] 파이썬 페이스북 API 키 발급 및 자동 포스팅 해보기 (0) | 2022.06.21 |
댓글