ウェブサービスにOAuth2プロバイダーの機能を実装し、ネイティブアプリのAPI使用認可にOAuth2を利用したい。

ResourceOwnerPasswordcredentialsフローを使ってaccess_tokenを発行することが可能ですが、 このウェブサービスではFacebookやTwitterのアカウントを使った登録が可能であり、 ID/PWを所持していないユーザが存在します。 Implicitフローではrefresh_tokenの発行が出来ないため、利用しづらいと考えています。

この場合、AuthorizationCodeフローを使った方法でaccess_tokenを得るのが正しいのでしょうか? ネイティブアプリではSafariやChromeを経由してしまうと、UXを著しく損なうため、より良い方法があれば教えてください。