2

サポートされているフローが HTTP リダイレクトのみの場合、OAuth アクセス トークンを取得するポータブルな方法は何ですか? たとえば、RunKeeper APIへのアクセスをモバイル アプリに許可したいと考えています。

  1. アプリはアドレスでブラウザを開きますhttps://runkeeper.com/apps/authorize?client_id=...&response_type=code&redirect_uri=MY_OWN_REDIRECT_URL
  2. ユーザーがクリックしてアクセスを許可すると、次の URL にリダイレクトされますMY_OWN_REDIRECT_URL?code=ONE_TIME_AUTH_CODE
  3. ???
  4. https://runkeeper.com/apps/tokenアプリは、ステップ 2 のワンタイム認証コードとクライアント シークレットを使用して、POST 要求で実際のアクセス トークンを要求します。

API は OAuth デバイス プロファイルをサポートしていません (ユーザーは手動でアプリに戻り、数桁のコードを入力します)。この場合、特にユーザーをすぐにアプリに戻したいので、どのようなオプションがあるかを考えています。


オプション1

アプリ内ブラウザーと組み合わせたモバイルアプリの組み込み Web サーバーになるため、OAuth リダイレクト URL を提供し、http://localhost:XYZW到着したときにワンタイム認証コードをキャッチできます。しかし、それが一般的なモバイル プラットフォームで動作するかどうかはわかりません (現時点では Android/iOS、これらのプラットフォーム用の Mongoose Web サーバーのポートを見つけました)。

オプション 2

のようなカスタム URI スキームを登録しmyapp-oauth-scheme://ます。RunKeeper の場合、このようなカスタム スキームにリダイレクトできるようです。そして、少なくとも Android/iOS ではアプリを再開できると思いますよね?! WP8 / BB10 などの他のプラットフォームはどうですか?

オプション 3

これは、本当に必要な場合にのみ取りたい道です。OAuth リダイレクト URL として使用され、着信するワンタイム認証コードを保存する非常に最小限の Web サービスをホストします。ユーザーがリダイレクトされると、最終的に「今すぐアプリに切り替えてください」というページが表示されるだけで、アプリは以前に受け取ったワンタイム認証コードを Web サービスに要求します。


結局のところ、より良いオプションはありますか? また、提示されたオプションのどれが Android/iOS およびおそらく他のプラットフォームで正常に動作するか知っていますか?

ところで、私は HTML ベースのアプリ (PhoneGap) を持っているので、外部ブラウザーを使用する必要さえありません。

4

2 に答える 2

0

オプション1と3を組み合わせて、移植性とUXを最適に組み合わせることができます。

認証用のアプリ内Webビューを提供しますが、デバイスでローカルhttpdを実行する代わりに、リダイレクトターゲットに最小限のWebサービスを使用します。これにより、ユーザーがアプリを離れることがなくなり、ランディングページで手動でアプリに戻るように指示する必要がなくなります。アプリは、Webサービスからアクセストークンを取得し、URLが変更されるとすぐにWebViewを閉じることができます。

ちなみに、私が働いている会社であるTembooには、独自のWebサービスを構築してホストする代わりに、使用できる最小限のWebサービスがあります。RunKeeperヘルパーのOAuthを確認してください。リダイレクトURLに使用できるコールバックサービスを提供します。これにより、認証トークンが保存されます。オプションでRunKeeperクレデンシャルを保存できるため、アプリでクレデンシャルを配布する必要がなく、クライアントの更新をプッシュせずにクレデンシャルを更新または無効化できます。

Android SDKは、 RunKeeper APIの残りの部分、および他の何百ものAPIへのアクセスを正規化することもできます。


あなたの編集を見ただけです。すでにWebViewを使用している場合は、さらに便利です。ユーザーをアプリ内に保持し、カスタムURLスキームをスキップし、アプリ内サーバーのオーバーヘッドをスキップし、小さなWebサービスを使用して認証トークンをキャプチャします。これは、iOSや、同等のWebViewを提供できるその他のプラットフォームでも正常に機能します。

于 2013-03-16T22:14:56.617 に答える
0

socialauth android を使用して、runkeeper api をアプリに統合できます。認証後、アクセストークンを取得できます。

その後、アクセス トークンを使用して、アクティビティの取得など、runkeeper のさまざまな機能を呼び出すことができます。呼び出しを行うには、runkeeper のドキュメントを参照してください。

于 2013-06-24T05:10:12.600 に答える