2

すべてのサービス メソッドの統合テストを作成したいと考えています。これらのメソッドは OAuth2 を使用して保護されており、iOS クライアントは gtm-oauth2 ライブラリを使用しています。

OCUnit テスト ケース内からユーザー名/パスワード資格情報を使用してアクセス トークンを取得するために記述できるコードは何ですか?

これを行った人は誰でも、Google コードを調べて時間を節約できますか?

4

1 に答える 1

3

これは 3 段階のプロセスです。

まず、ユーザー名とパスワードを忘れてください。彼らはあなたを間違った方向に導くでしょう。

オフラインの時点で、更新トークンを生成する必要があります。これにはブラウザ セッションが必要です。これは、Google がユーザーに認証ダイアログを案内するためです。リフレッシュ トークンを取得したら、それを保存するか、テスト ハーネスに埋め込むことができます (これは、保護する価値のあるシークレットを持たないダミー ユーザーであると仮定します。必要に応じて、リフレッシュ トークンをユーザー名とパスワードに相当する oauth と考えることができます。

テスト セットアップでは、更新トークンを使用してアクセス トークンを要求します。それは単純な呼び出しです

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

client_id=8819981768.apps.googleusercontent.com&
client_secret={client_secret}&
refresh_token=1/6BMfW9j53gdGImsiyUH5kU5RsR4zwI9lUVX-tqf8JXQ&
grant_type=refresh_token

アプリケーションに付与されたアクセス権をユーザーが取り消していない限り、応答には新しいアクセス トークンが含まれます。このようなリクエストからのレスポンスを以下に示します。

{
  "access_token":"1/fFBGRNJru1FQd44AzqT3Zg",
  "expires_in":3920,
  "token_type":"Bearer",
}

これらの詳細はhttps://developers.google.com/accounts/docs/OAuth2WebServer#offlineから取得されます

于 2013-09-03T08:40:14.443 に答える