質問: ウェブサービスにOAuth2プロバイダーの機能を実装し、ネイティブアプリのAPI使用認可にOAuth2を利用したい。 `ResourceOwnerPasswordcredentialsフロー`を使って`access_token`を発行することが可能ですが、 このウェブサービスではFacebookやTwitterのアカウントを使った登録が可能であり、 ID/PWを所持していないユーザが存在します。 `Implicitフロー`では`refresh_token`の発行が出来ないため、利用しづらいと考えています。 この場合、`AuthorizationCodeフロー`を使った方法で`access_token`を得るのが正しいのでしょうか? ネイティブアプリではSafariやChromeを経由してしまうと、UXを著しく損なうため、より良い方法があれば教えてください。
回答: Facebookに関していえば、Platform Policy の 7.Login の第2項に、 > > Native iOS and Android apps that implement Facebook Login must use our official SDKs for login. > > > と、Facebook Login(アクセストークンの取得)にオフィシャルSDKの利用が義務づけられています。そして、SDK を使う場合は端末にFacebookアプリがインストールされていれば、Facebook アプリとのFast App Switchによってアクセストークンを取得できます(アプリが内場合はSafari/WebViewなどの他の手段にフォールバックします)。