ngCordovaOAuthで「Could not find InAppBrowser plugin」とエラーが出る場合の対処法

ども。ここ1ヶ月くらい、Cordova + ionicでマルチプラットフォームなアプリを作っております。

Twitter認証をして、色々する機能を実装するために、ngCordovaのOAuthを使おうと思ったのですが、エラーを吐かれ、頑張ったら解決したので自分用のメモで書いておきます。

ngCordovaのインストールは普通に

bower install ngCordova

ってやってて、index.htmlにロードしてあります。

また、ngCordovaのOAuthにはInAppBrowserが必要なので、

`cordova plugin add cordova-plugin-inappbrowser'

で入れておきます。

コントローラーはこんな感じ。これ自体に問題はないのですが、これをiOSのエミュレータで実行すると

if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata)) === true)

こんなエラーを吐かれてしまいました。

検索すると同じようなエラーを出してる人が結構いるみたいだったのですが、日本語ではなかったし、書きなおすかって気持ちになりました。

結論からいうと、ngCordovaOauthのブラウザがインストールされているか判定する関数がおかしいんですね。

Twitterであれば、ng-cordova.jsの7475行目

if($cordovaOauthUtility.isInAppBrowserInstalled(cordovaMetadata)) === true)

の部分で、ブラウザがインストールされているか判定を行っています。

実際の判定は8886行目で行われています。

一応、ちゃんと見ているっぽいのですが、ハイレベルな書き方をしているのでシンプルにしました。

グローバルなcordovaにInAppBrowserが入ってるか見てあげれば、一応同じ動作をするはずです。

すると、こんな感じで認証画面を出すことができました。ログインすれば、コンソールにトークン一式が流れてきます。