先日、開発者向けセクションのVKontakteがAndroid用SDKを投稿しました。
人気のソーシャルネットワークであるVKontakteは、Flash SDKとJavascript SDK、iOS用のSDK、Android用の別のSDKを既に備えたアプリケーションを開発するためのツールキットを補充しました。
このライブラリには、デバイス上に公式クライアントが存在する場合と存在しない場合の両方での承認のためのツール、およびリクエストのコンパイル/実行と応答の処理を容易にするツールが含まれています。
関係のないバージョンのAndroidを搭載したデバイスの所有者を忘れていませんでした-SDKに付属するテストアプリケーションにはAndroid 2.2以上の要件があります
また、保護の問題も無視されていません。
カットの下の詳細。
入手先
VK Android SDKはGitHubからダウンロードできます 。
接続方法
プロジェクトへのSDK
ちなみに、Eclipseでは、Gradleコレクターを使用してAndroid Studioで使用しますが、VK SDKは他のライブラリと同様に接続するため、そこで停止しません。 便宜上、フォルダ構造を変更したとしか言えません。
=>
Android StudioでGradleを使用していない場合は、プラグインの名前を「main」から「vksdk」に変更する必要があります。
マニフェストで、アクティビティcom.vk.sdk.VKOpenAuthActivityを登録する必要があります。
VKのプロジェクト
開発者はセキュリティシステムを作成しているため、別のアプリケーションがあなたのなりすましを行うことはできません。
- まず、スタンドアロンアプリケーションを作成した後、設定でパッケージの名前を指定する必要があります。
- 次に、設定でアプリケーションのメインアクティビティの名前を指定する必要があります。
- 第三に(これが最も重要です)、コロンを削除した後、アプリケーションのキーのフィンガープリントを指定する必要があります。 デバッグとリリースなど、いくつかあります。 keytoolユーティリティを使用すると、MD5、SHA1、SHA256の3つの指紋が得られました。 VKontakteはSHA1に興味があります。
使い方は?
ログイン
アプリケーションを起動するとき、SDKを初期化する必要があります。
VKSdk.initialize(VKSdkListener listener, String appId, VKAccessToken token);
次のいずれかの方法で承認が推奨されます。
VKSdk.authorize(String... scope);
VKSdk.authorize(String[] scope, boolean revoke, boolean forceOAuth);
デフォルトでは、許可はVKontakteクライアントを介して行われます。 これがユーザーのデバイスにインストールされていない場合、またはforceOAuth == trueの場合、承認ページは別のアクティビティで開きます。
ライブラリにはインターフェイス要素が含まれているため、ディスプレイで何が起こっているかを監視する必要があります。 このために、VKUIHelperクラスが使用されます。 したがって、すべてのアクティビティで、次のようにメソッドをオーバーライドする必要があります。
@Override protected void onResume() { super.onResume(); VKUIHelper.onResume(this); } @Override protected void onDestroy() { super.onDestroy(); VKUIHelper.onDestroy(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { VKUIHelper.onActivityResult(requestCode, resultCode, data); }
アクティビティの例:
public class LoginActivity extends Activity { private static String sTokenKey = "VK_ACCESS_TOKEN"; private static String[] sMyScope = new String[]{VKScope.FRIENDS, VKScope.WALL, VKScope.PHOTOS, VKScope.NOHTTPS}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); VKSdk.initialize(sdkListener, "id_", VKAccessToken.tokenFromSharedPreferences(this, sTokenKey)); setContentView(R.layout.activity_login); VKSdk.authorize(sMyScope, true, false); } @Override protected void onResume() { super.onResume(); VKUIHelper.onResume(this); } @Override protected void onDestroy() { super.onDestroy(); VKUIHelper.onDestroy(this); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { VKUIHelper.onActivityResult(requestCode, resultCode, data); } private VKSdkListener sdkListener = new VKSdkListener() { @Override public void onCaptchaError(VKError captchaError) { new VKCaptchaDialog(captchaError).show(); } @Override public void onTokenExpired(VKAccessToken expiredToken) { VKSdk.authorize(sMyScope); } @Override public void onAccessDenied(VKError authorizationError) { new AlertDialog.Builder(LoginActivity.this) .setMessage(authorizationError.errorMessage) .show(); } @Override public void onReceiveNewToken(VKAccessToken newToken) { newToken.saveTokenToSharedPreferences(LoginActivity.this, sTokenKey); Intent i = new Intent(LoginActivity.this, MainActivity.class); startActivity(i); } @Override public void onAcceptUserToken(VKAccessToken token) { Intent i = new Intent(LoginActivity.this, MainActivity.class); startActivity(i); } }; }
クエリ実行
SDKで利用可能なモデルを使用してリクエストを行うことができます。
VKRequest request = VKApi.users().get();
または、呼び出されたメソッドの名前を直接指定します。
VKRequest request = new VKRequest("status.get");
パラメーターについても同じです:
VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.USER_IDS, "1,2"));
VKRequest request = new VKRequest("friends.get", VKParameters.from(VKApiConst.FIELDS, "sex,bdate,city"));
写真のダウンロードには、アルバムへのアップロード用のVKUploadAlbumPhotoRequestと、壁へのアップロード用のVKUploadWallPhotoRequestという特別なタイプのリクエストがあります。 どちらにも2つのコンストラクターがあります。
VKRequest request = VKApi.uploadWallPhotoRequest(VKUploadImage image, int user_id, int group_id); VKRequest request = VKApi.uploadAlbumPhotoRequest(VKUploadImage image, int album_id, int group_id); VKRequest request = VKApi.uploadWallPhotoRequest(File image, int user_id, int group_id); VKRequest request = VKApi.uploadAlbumPhotoRequest(File image, int album_id, int group_id);
壁またはグループuser_id == 0の壁に写真をアップロードする場合、そうでない場合-写真をアップロードする壁のユーザーのID。
グループのウォール/アルバムに写真をアップロードするときgroup_id ==ターゲットグループのid、それ以外の場合group_id == 0(たとえば、アルバムに写真をアップロードする)。
album_idでは、それぞれ、フォトアルバムの識別子。
VKUploadImageオブジェクトに関しては、Bitmapオブジェクトの形式の画像と、その画像タイプ(png、jpg)および品質値(jpgの場合)を表すVKImageParametersオブジェクトをコンストラクターに転送する必要があります。
オーディオ録音、ビデオ、およびドキュメントのアナログはまだ実装されていませんが、自分でそれを実行しても問題はありません。 :-)
リクエストを実行する前に、いくつかのパラメーターを変更できます。
// . API Error . // : 1. 0 infinity. request.attempts = 0; // (HTTPS). // false scope (nohttps). // : true. request.secure = false; // ( ). // false - . // : true. useSystemLanguage = false; // false , SDK. // : true. request.parseModel = false;
要求は
request.executeWithListener(VKRequestListener listener);
メソッド
request.executeWithListener(VKRequestListener listener);
によって実行され
request.executeWithListener(VKRequestListener listener);
サーバー応答(VKResponse)はリスナーに含まれます。
リクエストリクエストの例:
request.executeWithListener(new VKRequestListener() { @Override public void onComplete(VKResponse response) { // response. } @Override public void onError(VKError error) { // . error. } @Override public void attemptFailed(VKRequest request, int attemptNumber, int totalAttempts) { // . . } });
1つのバッチで複数のクエリを実行できます。 これを行うには、いわば、マルチリクエストを作成します:
VKBatchRequest batch_req = new VKBatchRequest(VKRequest... requests);
ご覧のように、1つのパッケージに任意の数のリクエストを含めることができます。
マルチクエリは単一のクエリと同様に、別のリスナーでのみ実行されます:
batch_req.executeWithListener(new VKBatchRequestListener() { @Override public void onComplete(VKResponse[] responses) { // responses ( , ) } @Override public void onError(VKError error) { // . error. } });
応答処理
応答がJava表現がSDKモデルにまだないオブジェクトを予期している場合、
parseModel = false;
を設定することは理にかなってい
parseModel = false;
受信したJSONを個別に処理します。 それ以外の場合は、結果のオブジェクトを必要な型にキャストするだけで十分です。
おわりに
Android用Vkontakte SDKは、かなり便利でエレガントなツールです。 ただし、もちろん生のままです。 これまでのファイル管理は、写真のアップロードにすぎません。 オーディオ、ビデオ、ドキュメントはまだ飛行中です。 これまでのモデルには、ユーザーと写真のJava表現のみが含まれています。 ただし、キャプチャ処理および検証エラー用のツールは既にあります。
ライブラリには多くの開発が必要です。つまり、これに参加してVKontakteの歴史に合わせることができます。
Android SDKの公式ドキュメントはこちらにあります 。
ご清聴ありがとうございました。