0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SuiteCRMのJSON APIを利用可能にする

Last updated at Posted at 2023-01-12

SuiteCRMはAPIを持っており、外部システムからアクセスしてデータを取ってきたり、逆に更新ができたりします
もちろんそのためには相手先のシステムを認証する必要があるのでOAuth認証の設定が必要になります

OAuth認証設定手順

大まかな流れ

詳しくは以下に書かれています(英語です)

流れとしては以下の通り

  1. opensslのSuiteCRMサーバへのインストール
  2. SuiteCRMサーバでのキーペアの生成
  3. SuiteCRM管理画面でOAuth認証用のIDを生成
  4. アクセス元サーバでのアクセストークン取得リクエストのコードを記述
  5. アクセストークンを用いてSuiteCRMのAPIを利用する

アクセス許可の方式の選択

SuiteCRMのOAuthでは以下の二つの方法でアクセストークンを取得できます

  1. SuiteCRM内のアカウントのIDとパスワードを用いてトークンを生成する方法
  2. 独自のクライエントシークレットをSuiteCRMのアカウントに紐付けして、そのシークレットを利用してトークンを生成する方法

どちらを設定するかはSuiteCRMの管理画面でOAuth認証用のIDを生成する際に設定できます。

SuiteCRM、PHP、JWTのバージョンの問題

SuiteCRMの最新版はPHP8で動きますし、Dockerで提供されているImageもphp8ベースで提供されています。
しかし、SuiteCRMが利用しているJWTのバージョンが古いためにPHP8ではエラーが起きるというバグが発生しているようです。

対策方法

composerでlcobucci/jwtのバージョンを4.0.0以上に上げればいいようなのですが、lcobucci/jwtのバージョンを上げると、league/oauth2-serverもバージョンを上げる必要があります
league/oauth2-serverのバージョンも上げると今度はSuiteCRM側のコードでDeprecatedエラーが発生します

ってことで仕方なく、SuiteCRMを起動しているDockerイメージをBitnamiが提供しているものからphp7.4-apacheに変更して対応することにしました

まとめ

約半日ほど調査と対応に追われてしまいましたがなんとかアクセストークンが発行され、APIを利用できるようになりました。
SuiteCRMの公式ドキュメントを参考にしながら、色々やってみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?