LinkedIn APIで個人投稿と会社ページ投稿を分けて実装する理由

SNS予約投稿サービス「sns-poster」で、LinkedInへの投稿が突然失敗しました。Posts APIが 401 DISABLED_APPLICATION を返したのが原因です。調べていくと、個人のフィードへの投稿と会社ページへの投稿は、アプリもOAuthフローも分けて作るべきだと分かりました。その経緯と設計をまとめます。

何が起きたか

2026年9月16日から、LinkedInへの投稿が失敗するようになりました。APIの応答は次のとおりです。

401 DISABLED_APPLICATION

「認証が切れた」のではなく、「そのClient IDのアプリが無効」という意味です。トークンを取り直しても直りません。

原因

LinkedIn Developer Portalには、アプリが2つありました。

  1. 以前に作った動作確認用のアプリ(すでに削除済み)
  2. Community Management APIの審査を受けるために作ったアプリ

サーバーの .env の LINKEDIN_CLIENT_ID が、削除済みの1つ目のアプリを指したままでした。アプリを消した結果、そのClient IDを使うAPI呼び出しがすべて DISABLED_APPLICATION になったのです。

では2つ目のアプリに切り替えればよいかというと、そうはいきませんでした。2つ目のアプリは、Community Management APIの審査のためだけに作ったもので、Share on LinkedIn(個人の投稿に必要な権限)の製品が追加されていませんでした。

直し方

個人投稿用に、新しいアプリを作りました。

  1. 個人投稿専用のアプリを新規作成する
  2. 製品として「Share on LinkedIn」と「Sign In with LinkedIn using OpenID Connect」を追加する
  3. リダイレクトURLに、自社のコールバックURLを登録する
  4. .env のClient IDとシークレットを新しいアプリのものに更新する
  5. テスト投稿で確認する

これで投稿が復旧しました。

なぜ個人投稿と会社ページ投稿を分けるのか

今回の件で、次の設計に決めました。

理由は2つあります。

1. 必要なAPI製品が違う

個人の投稿は「Share on LinkedIn」で行えます。会社ページへの投稿には、Community Management APIが必要で、こちらは別途審査があります。仕様は変更されることがあるため、公式ドキュメントで最新の内容を確認してください。

2. 失敗の影響範囲を分けられる

アプリを分けておけば、片方のアプリを整理・削除したり、審査で止まったりしても、もう片方の投稿は動き続けます。今回の障害は、まさにアプリ整理の影響が投稿に波及した例です。

現在の状況

2026年9月時点で、Community Management APIの審査は「Review in progress」でした。会社ページ投稿は、審査の結果を待って実装する方針です。

まとめ:LinkedIn連携で最初に確認すること

sns-posterは、LinkedInを含む複数のSNSへ予約投稿できるサービスです。詳しくは機能ページをご覧ください。