こんにちは、habrosociety。
開発を共有したい-Yandex.Money APIを操作するためのAndroidライブラリ。
4月15日までに、YandexはYa.Moneyと連携するためのAPIを開きました。 Yandexサービスを操作するために以前に開いたすべてのAPIと同様に、OAuthによる認証に基づいています。 現在の実装では、APIを使用して、アカウントに関する情報を要求し、アカウントに対する操作のリストを要求し、テンプレートに従って支払いを行うことができます。 詳細-
ドキュメントでは
、開発者クラブで質問することができます。
その結果、APIを介してウォレットを操作するAndroid向けの
ライブラリと
デモアプリケーションは洗い流されました。
実際、Androidアプリケーションに関するライブラリの基盤は
OAuthActivityクラスです。
これから Activityを継承し、アプリケーションの初期OAuth承認を実行します。 アプリケーションの承認の結果はアクセストークンになり、
YandexMoneyServiceクラスが
初期化され、このトークンを使用して、次のアクションを実行できます(現時点では)
引数なしで呼び出されると、2番目のメソッドはすべての操作(クレジットと請求の両方)を返します。 ページングはまだサポートされていません。 特定の操作を示す引数としてクラス
YandexMoneyOperationTypesのオブジェクトを渡すことができます。
ブリスターライブラリにはトークンストアもあります。 毎回認証を要求しないように、トークンを保存できます。 このために、
AccessTokenStorageクラスの継承者
、つまり
SharedPreferencesStorageと
EncryptedSharedPreferencesStorageが
使用されます。 2番目の実装は、3DES暗号化形式でトークンを保存するという点で異なります。
OAuth認証を使用するには、アプリケーションで次のメソッドを実装してOAuthActivityの下位クラスを定義する必要があります。
- getRequiredPermissionsは、アプリケーションに必要な権限のセットを返すメソッドです。 Yandex.Moneyの場合は、 YandexMoneyPermissionsコンテナーを使用します
- getClientId-Yandex.Moneyシステムのクライアント識別子。 申請登録段階で発行されます。
- getAppId-アプリケーション識別子。 redirect_uriアドレスをコンパイルするために使用され、実際に承認応答を処理するときにアプリケーションを識別します。設定する方がアプリケーションパッケージの名前になります。
- getServer-認証を要求するサーバー
- getTokenStorage-受信した認証トークンの保存に使用されるトークンストアを返します
承認の成功または失敗は、Action == "en.elifantiev.yandex.oauth.AUTH_RESULT"を送信してアクティビティを開始することで報告されます(OAuthActivity.ACTION_AUTH_RESULTを参照)。 インテントは、AUTH_RESULT_OKまたはAUTH_RESULT_ERRORに等しい成功フラグ(.AUTH_RESULT_EXTRA)を配置します。 エラーはExtra .EXTRA_AUTH_RESULT_ERRORにあります。
もう一つの重要なポイント。 アプリケーションの承認からの復帰を正常に処理するには(Yandexの要件によると、OSの組み込みブラウザーで実行されます)、相続人は次のフィルターで説明されるOAuthActivityインテントを処理する必要があります。
<intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="oauth" android:host="@string/app_id"/> </intent-filter>
実際、これはブラウザーをURL oauthにリダイレクトする処理です。// appId(ここで、appIdはアプリケーション識別子です。getAppIdメソッドと同じ、アプリケーションリソースに保存します)。
デモアプリについて...
AppLoginActivity 、
AuthActivity 、
MainActivityの3つの
アクティビティで構成されています。
アプリケーションの最初の起動時にAppLoginActivityは、アプリケーションの承認手順を実行することを提案します(OAuthActivityの後継であるAuthActivityを起動します)。 アプリケーションがすでに認証に成功している場合、PINコード要求ダイアログが表示されます。
認証手順を実行する前に、AuthActivityはユーザーに新しいPINコードを要求します。このPINコードは、暗号化されたトークンの保存に使用され、認証を開始します。
承認結果はAppLoginActivityに戻り、そこで処理されます(エラーメッセージが表示されるか、状態が保存されます-承認が完了します)。 成功すると、MainAcitivtyが起動し、サービスコールが起動します。
結果はどうなりますか...実装に関する批判をもらい、苦情や提案などを収集したいです。 一緒にカットしたい人-ようこそ。
PS著者はYandexとYandex.Moneyとは何の関係もありません。
キーが
並べられた状態で
編集すると、アプリケーションは起動しません。 代替リダイレクトアドレスを使用してアプリケーションを登録し、識別子を取得します。