<目次>
(1) LinkedIn APIの使い方について(PythonでAPIコール疎通させるまで)
(1-1) STEP1:【任意】企業・団体ページの作成
(1-2) STEP2:Appの作成
(1-3) STEP3:AppのVerify
(1-4) STEP4:Appの「Auth」タブの確認/設定
(1-5) STEP5:Appの「Products」タブの確認/設定
(1-6) STEP6:認証コードの取得(Python)
(1-7) STEP7:API疎通チェック(Python)
(1) LinkedIn APIの使い方について(PythonでAPIコール疎通させるまで)
LinkedIn APIの使い方という事で、Python言語でAPIコールを疎通させるまでに必要なステップをご紹介します。
(1-1) STEP1:【任意】企業・団体ページの作成



(1-2) STEP2:Appの作成




(1-3) STEP3:AppのVerify




↓


↓

(1-5) STEP5:Appの「Products」タブの確認/設定




(1-6) STEP6:認証コードの取得(Python)
●STEP6-1:コード(code)の取得

(サンプルプログラム)
# 必要なパッケージ: python -m pip install requests
import requests, secrets
url = requests.Request(
'GET',
'https://www.linkedin.com/oauth/v2/authorization',
params = {
'response_type': 'code', # Always should equal to fixed string "code"
# ご自身のAppのClientID
'client_id': 'XXXXXX',
# ログインしたユーザーが認証後にリダイレクトされるURIを指定
# (備考)
# ・この値は「OAuth 2.0 Authorized Redirect URLs」の値のいずれかと一致する必要あり
# ・ご自身で所有するローカルやリモートのサーバ等を指定します。
'redirect_uri': 'http://localhost:8000',
# 一意なランダム文字列を指定。
# サーバ側で現在の認証リクエストを識別するために使用します。
# もし値を何にするか困った場合、例えば「secrets.token_hex(8).upper()」のようなモジュールで生成するものありです。
# このstateをサーバで保持する事で、認証済のセッションを識別します。
#'state': secrets.token_hex(8).upper(),
'state' : 'XXXXXX',
# リクエストする権限を指定。
# 下記は一例のため、必要に応じて変更。
# ↓付与可能な権限の一覧はこちら
# https://docs.microsoft.com/en-us/linkedin/shared/references/migrations/default-scopes-migration#scope-to-consent-message-mapping
#'scope': '%20'.join(['r_liteprofile', 'r_emailaddress', 'w_member_social']),
'scope': 'r_liteprofile'
},
).prepare().url
# ここまで来たら、サーバ⇒クライアントにURLを送ってOK
# 今回はローカル実行のため、サーバ⇒クライアントにURLを送る
import webbrowser
webbrowser.open(url)


http://localhost:8000/?code=XXXXXXXXXXXX&state=DCEeFWf45A53sdfKef424
●STEP6-2:「access_token」の取得
・①「access_tokenを取得するための下記Pythonプログラムをローカル実行

(サンプルプログラム)
import requests
access_token = requests.post(
'https://www.linkedin.com/oauth/v2/accessToken',
params = {
'grant_type': 'authorization_code',
# 前の手順で取得したcodeをセット
'code': 'XXXXX',
# 前の手順のPythonコード中の'redirect_uri'と同じ値にする
'redirect_uri': 'http://localhost:8000',
# ご自身のAppのClient ID
'client_id': 'XXXXX',
# ご自身のAppのClient Secret
'client_secret': 'XXXXXX',
},
).json()['access_token']
print(access_token)
(1-7) STEP7:API疎通チェック(Python)
import requests
import os
import oauth2 as oauth
from requests.auth import HTTPBasicAuth
def main():
response = requests.get(
'https://api.linkedin.com/v2/me',
params = {
# APIパラメータがあれば追記
},
headers = {
'Authorization': 'Bearer ' + 'XXXXX',
# HTTPヘッダーがあれば追記
},
)
res_json = response.json()
print(res_json)
return res_json
if __name__ == "__main__":
main()
{'localizedLastName': 'xxxx', 'profilePicture': {'displayImage': 'urn:li:digitalmediaAsset:C5603AQG8r0KSOzwwaA'}, 'firstName': {'localized': {'ja_JP': ' xxxx '}, 'preferredLocale': {'country': 'JP', 'language': 'ja'}}, 'lastName': {'localized': {'ja_JP': 'xxxx'}, 'preferredLocale': {'country': 'JP', 'language': 'ja'}}, 'id': 'XXXXXX', 'localizedFirstName': 'xxxx'}

