ランサーズ(Lancers)エンジニアブログ > ツール/ライブラリ > Facebook SDK GraphAPI v2.2 → v11.0にバージョンアップしました
lancers-kun

Facebook SDK GraphAPI v2.2 → v11.0にバージョンアップしました

bando.tetsuro|2021年07月30日
ツール/ライブラリ

開発部エンジニアの坂東です。現在開発に関わっているPROsheetで、Facebook(以下「FB」)を利用した新規登録・ログインが行えないとの声があり、正常に動作するように修正したので振り返ってみようと思います。

SDK について

SDK(Software development kit)はソフトウェア開発キットの略で、プログラムの一部、開発環境、オペレーティングシステムなどを、ツール一式として提供しているものを指します。

本記事では、FB社がWebサイト上でFBを利用した新規登録やログインなどが行えるように外部に提供している、FB SDKについて解説します。

GraphAPI とは

タイトルになっているGraphAPIですが、こちらはFB SDKとアプリケーション間でFBソーシャルグラフ上のデータの読み取りと書き込みを行うための手段として最も重要なものとなります。HTTPベースのAPIであり、プログラムによるデータのクエリ、新しいストーリーの投稿、広告の管理、写真のアップロードなど、アプリのさまざまなタスクに利用できます。

GrapbAPIの中身は下記の要素で構成されています。

・ノード → 特定のオブジェクトに関するデータ(ユーザー、写真、ページ、コメントなど)

・エッジ → 単一のオブジェクトに接続されたコレクション(一つのページ上の複数の写真、一つの写真に対する複数のコメントなど)

・フィールド → 単一のオブジェクトまたはコレクション内の各オブジェクトに関するデータ(ユーザーの誕生日、ページの名前など)

より詳細にGraphAPIに関して知りたい方は公式を見て頂ければ幸いです。

 

今回の対応

まずFB For Developersにアクセスして、FBを利用しての新規登録やログインが行えなくなっている原因を特定するために、既存のPROsheetアプリを調査します。

 

幾つかの設定を見ていく中でアラートを確認した際に、現在アプリが使えない状態だと知りました。

ここからわかることは、アプリが過去にアクティブではない状況が続いていたことです。

アクティブではない状況が続いた要因として、下記の2点を推測しました。

・ユーザーがFBでの新規登録やログインを一定期間行なっていない

・GraphAPIが、何らかの事情で利用できなくなっている

現在も利用されているサービスのため、1点目は一旦考慮せずにGraphAPIにアクセスできない要因を探すことにしました。

次に気になったことは、GraphAPIのバージョンがv2.2だったことです。最近のGraphAPI関連の記事を見てもバージョンがv2.xを利用しているものはありませんでした。既に提供されていないと感じ、提供されているグラフAPIバージョンを見たところ、やはり提供終了日直前のバージョンがv3.3の状態で、v2.2は提供されていないことがわかりました。

 

調査後の対応策として、アプリとソースコード上のGraphAPIのバージョンをv2.2から最新のv11.0まで上げることにしました。v2.2からv11.0まで上げると聞くと非常に難しく感じる方もいらっしゃるかもしれないですが、言語やフレームワークのバージョンアップと異なり、FB SDKのGraphAPIをバージョンアップすることは比較的簡単です。行なったことは2つのみです。

1つ目はPROsheetアプリ側、詳細設定の「APIバージョンのアップグレード」でv2.2が設定されている部分をv11.0に変更しました。これによってアプリ側が求めるGraphAPIのバージョンがv11.0とな

ります。

2つ目は、ソースコード側でGraphAPIに関連した部分をv11.0に修正します。

js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&appId=<?=$account['FACEBOOK_APP_ID']?>&version=v11.0";

上記2つの修正後、PROsheet上でFBを利用した新規登録及びログインができることを確認しました。

振り返って

多くのアプリケーションで利用されているFB SDKですが、導入だけでなくバージョンの追従も容易なことを学ぶことができました。

PROsheet上にはFB SDK以外にもバージョンアップが必要な部分があるので、引き続きプロダクトの品質改善を行なっていきます。