BACK
|Tech

LinkedInAPIを使う

LinkedInのAPIで何ができるの?

  • 結論。大したことはできない。。。

とりあえずつなげるまで

appの登録

ここからアプリを作るキャプチャ.PNG

  • 適当に設定。とりあえず動かすにはなんでもいいので頑張らない キャプチャ.PNG
  • 設定すると「Client ID」と「Client Secret」が払い出されるので、メモっとく
  • 「RedirectURL」を求められるのでちゃんと入れる。アプリからLinkedInの認証画面に飛んでOKとなった後に遷移する画面。とりあえず適当にエントリーポイント作っておく。

キャプチャ.PNG

自分のアカウントでアプリの許可

  • CLIENTIDとREDIRECTURIを使って、Appの許可を行う。
https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&state=987654321&scope=r_basicprofile
  • 許可すると、REDIRECT_URIにcodeパラメータが付与されてリダイレクトされる。

トークンを取得

      curl -X POST \
        --data "grant_type=authorization_code" \
        --data "code={code}" \
        --data "redirect_uri={REDIRECT_URI}" \
        --data "client_id={CLIENT_ID}" \
        --data "client_secret={CLIENT_SECRET}" \
        "https://www.linkedin.com/oauth/v2/accessToken"
  • するとトークンが返ってくるので、それを使って各APIをたたく。
  • 本当はprofileAPIとか使いたかったが、パーミッションがなくてたたけない。
  • パーミッションを追加するにはここからいろいろ登録が必要とのこと。審査も必要なので残念。。。

APIをたたく

  • せっかくなので、goで書いておく
    reqURL := "https://api.linkedin.com/v1/people/~?format=json"
    token := "{token}"
    req, err := http.NewRequest(
        "GET",
        reqURL,
        nil,
    )
    if err != nil {
        fmt.Println(err)
    }
    req.Header.Set("Authorization", "Bearer "+token)
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println(err)
    }
    defer resp.Body.Close()

    respBody, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(string(respBody))
  • こんな感じ
  • 本当はつながってるユーザの情報がとりたかったが、いけてない。。。。

こちらでも公開中
hatena
はてなブログ
luck!
Luck!