技術メモ

Scala,React Nativaなどの技術メモ

react native social login

react nativeシリーズは備忘録的にたいした編集もせずに書く殴っていたが、いがいに見てくれているひとがいるらしく申し訳なく思った。しかし、いまは編集の時間がもったいないのでこのままリリースまでは走る。

parseの設定

さてさて、ビューができてきたのでそろそろ画像などちゃんと表示させたくなる。ここまでくるとダミーデータをつくるのも非効率な気がしてきたので、サーバサイドから値を返すようにする。

サーバサイドには、MBaasのparseを選定した。理由は時間的に低コストでできそうだからMBaas。MBaasのなかでも評判が一番良さそうだった。これまでMBaasはKiiCloudくらいしかまともに使ったことがない。

dashbordからリレーションの設定

webのコンソールからいくつかダミーデータをつくっていく。最初普通にuserIdとかってカラムをつくって参照してたが、よくよくみるとRelationって型を選択できる。webのコンソールからリレーションをはることはできないらしい。

www.parse.com

と、思ったけどよくよくみるとこれは2年も前の記事で、実際にparseのdashboardで試してみるとRelation型のカラムのView relationボタンから参照一覧に飛んで、そこで+ボタンから追加できそう。

API経由でリレーションの設定

parse.com

このあたりを参考にすると、API経由でリレーションの設定もできる。

columnNameのとこにカラム名を指定するの注意。

f:id:papuaaaaaaa:20160107231827p:plain

また、はまりポイントとしては、カスタムクラスのエンドポイントはAPI Consoleにウォーターマークでもでるように、classes/_Userみたいな感じでもいいんだけど、デフォルトであるUserクラスのエンドポイントが間違っていてハマった。

parse.com

ま、リファレンスにあるとおりなんだけど、/usersになるみたい。parseのUI好きだなあ。

SocialLoginの実装

ライブラリの選定

さてダミーデータ準備できたが、データをUserに紐付けたので当然ながら認証の問題がでてくる。めんどくさいとは思いながらも、いい感じのライブラリないかなと思ってたら、react-native系のライブラリまとめを発見した。スターの数はやっぱり参考になる。

github.com

social login系ではreact-native-loginあたりがいいなとおもったけど、Warning: This project is running on React Native 0.5.0, which is a couple of months old. Pull requests welcome to update to the most recent version!とのこと。0.5.0はちょっと古すぎるなあ。いま0.17.0つかってるし。Pull requestsの期待に応えられないことに歯がゆさを感じつつ、他をさがす。

github.com

とまあ、react-native-facebook-loginなるものもよさそう。package.jsonみる感じ0.14.0なのでまあまあ期待できる。なのでこれを導入してみる。

github.com

react-native-facebook-loginの導入

FacebookSDKは個別に落とす必要はなく、ライブラリに含まれている。

QuickStartに従って設定を進める。(facebook for developersにログインしたら見られる)

Xcodeのビルドが通ったので設定はできた模様。とりあえずexsampleにあるサンプルを動かしてみようと思ったが動かず。

RCTRootView.h' file not found

github.com

違うライブラリのissueだが、これを参考にRCTRootView.hを追加してあげたら解決できた。

FBSDKCoreKit.h' file not found

stackoverflow.com

またなにかしらでてくるが、このあたりを参考にnpm installしてみる。いちどした気がしたけどな。

example.xcodeproj Applications using launch screen files and targeting iOS 7.1 and earlier need to also include a launch image in an asset catalog.

こいつはとりあえず対象OSバージョンを9.2とかにして消して、

sourcecode.c.h in Frameworks & Libraries build phase

stackoverflow.com

こいつは、どうやらさっきLink Binary with Libraries.hファイルを追加したことがよくないらしく、それらを消す。

ld: warning: Auto-Linking supplied '../node_modules/react-native-facebook-login/FacebookSDK/FBSDKCoreKit.framework/FBSDKCoreKit', framework linker option at ../node_modules/react-native-facebook-login/FacebookSDK/FBSDKCoreKit.framework/FBSDKCoreKit is not a dylib

example/Frameworksに残っていた.hファイルも削除する

FBSDKCoreKit.h' file not found

と、ここにまた戻ってきた。。。

反省

どう考えてもiOSアプリのプロジェクト構成やビルド、リンク周りの仕組みを理解せずにやってみてるから問題が解決できないわけ。ヘッダファイルが見えてないのだから、原因は明白なわけで。ちょっと一旦仕切りなおそう。