前提
公式のSDKを使用する
導入の仕方は割愛
SDK | URL | 備考 |
---|---|---|
Facebook SDK | https://developers.facebook.com/docs/ios | swift用のSDKもあるhttps://developers.facebook.com/docs/swift |
認証の仕方
ログインメソッドのプロパティで、
認証の振る舞いを選択できるので事前に決めておきましょう
FBSDKLoginManager().loginBehavior = .SystemAccount
Facebook SDK
| 振る舞い | 内容 |
|:-----------|:-----------|:-----------|
| Native | Facebookアプリに遷移して認証 |
| Browser | safari or SFSafariViewController(iOS9~)で認証 |
| SystemAccount | 設定アプリのアカウントで認証 |
| Web | UIWebViewでログイン |
iOS9~は、なんとNative(Facebookアプリ経由のログイン認証)が利用できなくなっている。
Instagramも利用できなくなっているので、おそらく間違いない。
↓ソース
http://stackoverflow.com/questions/32620002/facebook-login-ios-9-without-safari?answertab=votes#tab-top
そのため、SystemAccountを使ったログインなど別の振る舞いを使ってログインする必要があります。
SystemAccountを利用した場合の挙動
- ログインメソッドを呼んだタイミングでアラートを表示するUIになる
- 設定アプリで、Facebookログインしていない場合、SafariViewControllerが表示される
- Facebookアプリでログインしても、設定アプリがログイン状態になるわけではないので、上記のケースは十分起こりえる
実装するときに注意すること
投稿の許可と、ユーザーデータ取得の許可でログインメソッドが違う
<対処法>
各パーミッションごとにログイン処理を実装する必要があります。
- 投稿用:logInWithPublishPermissions
- データ取得用:logInWithReadPermissions
アプリに対してのアクセス可否ごとにエラー処理する必要がある
Facebookアプリのアプリ管理画面で、アクセスの可否をコントロールできるため、
各パーミッションへのアクセス可否を判定してエラーハンドリングする必要があります。
Facebookでアプリに提供するパーミッションを変更できる
<対処法>
token確認時
FBSDKAccessToken.hasGranted
メソッドでBool値が返ってくるので、アクセス許可しているか確認可能。
友達リストへのアクセスを許可しているか確認する場合は、こんな感じtoken.hasGranted("user_friends")
login時
login用メソッドのレスポンスで、アクセス拒否している権限を取得できる
FBSDKLoginManagerLoginResult.declinedPermissions
設定アプリでアクセス拒否している場合がある
対処法
login用メソッドのレスポンスで、Error Code=306が返ってくるので、アプリ側でアラートを出すなど適切に処理する
テスト
Facebookのアプリ管理画面
(https://developers.facebook.com/apps/<アプリID>/dashboard/)で、
テストユーザーの作成が、できるので、そのアカウントを使用する。
間違っても自分のアカウントは使わない。
テストフロー
ダッシュボートのこのボタンからテストユーザーの登録へ、
作成後。
- ユーザーID, パスワードが変更
- テストアカウント同士で、友達の登録
- tokenの取得
などができる
Graph APIエクスプローラ
で、先ほど取得したtokenを使って、テストユーザーのtokenの情報をコントロールできる
例えば、ユーザーが友達リスト取得のアクセスだけ拒否したケースなど細かい認証周りのテストを、簡単にすることができる。
me/permissions/user_friendsのエンドポイントにDELETリクエストしているとこ
まとめ
Facebookログインの機能をアプリに実装する前に、
- ログインの振る舞い
- 各権限ごとにアクセス拒否された場合の振る舞い
を決めておきましょう
Facebookが提供してくれているテスト環境を有効活用しましょう
参考URL
Facebookの公式ドキュメント
https://developers.facebook.com/docs/ios
導入方法が写真付きで分かりやすく載ってます
http://xoyip.hatenablog.com/entry/2014/05/26/200000