Вконтакте мобильное приложение java

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Java library for working with VK API

License

VKCOM/vk-java-sdk

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Java library for VK API interaction, includes OAuth 2.0 authorization and API methods. Full VK API features documentation can be found here.

This library has been created using the VK API JSON Schema. It can be found here. It uses VK API version 5.131.

  • Apache Http Client version 4.5.8
  • SLF4J version 1.7.26
  • Apache Commons Lang version 3.6
  • Apache Commons Collections version 4.3
  • Apache Commons IO version 2.6
  • Google Gson version 2.8.5

To add a dependency on VK Java SDK using Maven, use the following:

dependency> groupId>com.vk.apigroupId> artifactId>sdkartifactId> version>LATEST_VERSIONversion> dependency>

To add a dependency using Gradle:

Create a new VK application here to use VK Java SDK. Please choose an application type depending on which authorization pattern you need. It should be «Standalone» for Direct Authorization, «Web site» for Authorization Code Flow for server side requests and any of them for Client Credentials Flow.

Fill in the title, confirm the action via SMS and you will be redirected to the application settings page.

You will need your application ID (referenced as API_ID in the documentation), secure key (CLIENT_SECRET) and authorized redirect URI (REDIRECT_URI).

VK Java SDK uses SLF4J for logging. If you want to turn on logging, you must include a plugin that bridges SLF4J with a concrete logging framework. See SLF4J documentation.

dependencies> dependency> groupId>org.slf4jgroupId> artifactId>slf4j-jdk14artifactId> version>1.7.26version> dependency> dependencies>

Add logging.properties file with configuration (located at your src/main/resources path):

.level=INFO handlers=java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level=FINEST deng.level=FINEST 

Set java.util.logging.config.file system property:

-Djava.util.logging.config.file=logging.properties 
dependencies>  Binding for Log4J --> dependency> groupId>org.apache.logging.log4jgroupId> artifactId>log4j-slf4j-implartifactId> version>2.11.2version> dependency>  Log4j API and Core implementation required for binding --> dependency> groupId>org.apache.logging.log4jgroupId> artifactId>log4j-apiartifactId> version>2.11.2version> dependency> dependency> groupId>org.apache.logging.log4jgroupId> artifactId>log4j-coreartifactId> version>2.11.2version> dependency> dependencies>
dependencies < //Binding for Log4J -->compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.11.2' //Log4j API and Core implementation required for binding compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.2' compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.2' > 

Add log4j2.xml file with configuration (located at your src/main/resources path):

xml version="1.0" encoding="UTF-8" ?> Configuration status="info"> Appenders> Console name="Console" target="SYSTEM_OUT"> PatternLayout pattern="%d %-5p %c:%L - %m%n"/> Console> Appenders> Loggers> Root level="info"> AppenderRef ref="Console"/> Root> Loggers> Configuration>

Create VkApiClient object using the following code:

TransportClient transportClient = new HttpTransportClient(); VkApiClient vk = new VkApiClient(transportClient);

Note that you can use your own transport client. We use Apache Http Client.

The library provides several authorization flows based on OAuth 2.0 protocol implementation in vk.com API. Please read the full documentation before you start.

7.1. Authorization Code Flow for User

OAuth 2.0 Authorization Code Flow allows calling methods from the server side.

This flow includes two steps — obtaining an authorization code and exchanging the code for an access token. Primarily you should obtain the «code» (manual) and then use this method to complete the flow:

UserAuthResponse authResponse = vk.oAuth() .userAuthorizationCodeFlow(APP_ID, CLIENT_SECRET, REDIRECT_URI, code) .execute(); UserActor actor = new UserActor(authResponse.getUserId(), authResponse.getAccessToken());

This takes your application ID, secure key, redirect URI, enumerated scopes and code obtained on the previous step of the flow.

When succeed, a UserActor object is created. You can call VK API methods on behalf of a user.

7.2. Authorization Code Flow for Community

The difference from the previous flow is that you send the groupId parameter to obtain the community’s access token. Please read the full manual.

GroupAuthResponse authResponse = vk.oAuth() .groupAuthorizationCodeFlow(APP_ID, CLIENT_SECRET, REDIRECT_URI, code) .execute(); GroupActor actor = new GroupActor(groupId, authResponse.getAccessTokens().get(groupId));

When succeed, a GroupActor object is created. You can call VK API methods on behalf of a community.

7.3. Handling need_validation error

Proceeding each of previous authorization flows you can receive a «need_validation» error. Use the following code to handle the error:

UserAuthResponse authResponse; try < authResponse = vk.oAuth() .userAuthorizationCodeFlow(APP_ID, CLIENT_SECRET, REDIRECT_URI, code) .execute(); > catch (OAuthException e) < e.getRedirectUri(); > UserActor actor = new UserActor(authResponse.getUserId(), authResponse.getAccessToken());

7.4. Client Credentials Flow

This flow allows to interact with API service methods with «secure» prefix. Use this method:

ServiceClientCredentialsFlowResponse authResponse = vk.oAuth() .serviceClientCredentialsFlow(APP_ID, CLIENT_SECRET) .execute(); ServiceActor actor = new ServiceActor(APP_ID, authResponse.getAccessToken());

When succeed, a ServiceActor object is created. You can call VK API methods on behalf of an app.

You can find the full list of VK API methods here.

GetResponse getResponse = vk.wall().get(actor) .ownerId(1) .count(100) .offset(5) .filter("owner") .execute();

Request sample with common method parameters:

ListUserXtrCounters> users = vk.users().get(actor) .userIds("1") .fields(UserField.VERIFIED, UserField.SEX) .lang(Lang.EN) .execute();

The full list of common parameters is available on this page.

Request sample for uploading and posting photos on user wall.

PhotoUpload serverResponse = vk.photos().getWallUploadServer(actor).execute(); WallUploadResponse uploadResponse = vk.upload().photoWall(serverResponse.getUploadUrl(), file).execute(); ListPhoto> photoList = vk.photos().saveWallPhoto(actor, uploadResponse.getPhoto()) .server(uploadResponse.getServer()) .hash(uploadResponse.getHash()) .execute(); Photo photo = photoList.get(0); String attachId = "photo" + photo.getOwnerId() + "_" + photo.getId(); GetResponse getResponse = vk.wall().post(actor) .attachments(attachId) .execute();

You can find more information about execute method here.

JsonElement response = vk.execute().code(actor, "return API.wall.get(\"count\": 1>)") .execute();
JsonElement response = vk.execute().storageFunction(actor, "foo") .funcV(2) // set storage function version .unsafeParam("user_id", 1) // set storage function argument .execute();
JsonElement response = vk.execute().batch(actor, vk.database().getChairs(1).count(10), vk.database().getCities(1), vk.groups().getMembers(actor).groupId(groupId) ).execute();
try < vk.wall().post(actor) .message("Hello world") .execute(); > catch (ApiWallLinksForbiddenException e) < // Links posting is prohibited > catch (ApiException e) < // Business logic error > catch (ClientException e) < // Transport layer error >
String captchaSid = null; String captchaImg = null; try < vk.wall().post(actor).message("Hello world").execute(); > catch (ApiCaptchaException e) < captchaSid = e.getCaptchaSid(); captchaImg = e.getCaptchaImg(); > //Showing captcha image. if (captchaImg != null) < vk.wall().post(actor) .message("Hello world") .captchaSid(captchaSid) .captchaKey(captchaKey) .execute(); >

Override methods from CallbackApi class for handling events

public class CallbackApiHandler extends CallbackApi < @Override public void messageNew(Integer groupId, Message message) < System.out.println(message.getText()); > >

12. Callback API Long Poll handler

Enable Callback API Long Poll for needed group and specify which events should be tracked

HttpTransportClient httpClient = HttpTransportClient.getInstance(); VkApiClient vk = new VkApiClient(httpClient); vk.groups().setLongPollSettings(groupActor).enabled(true) .wallPostNew(true) .messageNew(true) .execute();

(WIP) Override methods from CallbackApiLongPoll class for handling events and create needed constructors

public class CallbackApiLongPollHandler extends CallbackApiLongPoll < public CallbackApiLongPollHandler(VkApiClient client, UserActor actor, Integer groupId) < super(client, actor, groupId); > public CallbackApiLongPollHandler(VkApiClient client, GroupActor actor) < super(client, actor); > @Override public void messageNew(Integer groupId, Message message) < System.out.println("messageNew: " + message.toString()); > @Override public void wallPostNew(Integer groupId, WallPost wallPost) < System.out.println("wallPostNew: " + wallPost.toString()); > >

In order to use the created CallbackApiLongPollHandler which overrides methods from CallBackApiLongPoll, the instance of it needs to be created and method run called

CallbackApiLongPollHandler handler = new CallbackApiLongPollHandler(vk, groupActor); handler.run();
//Init clients TransportClient transportClient = new HttpTransportClient(); VkApiClient vkClient = new VkApiClient(transportClient); VkStreamingApiClient streamingClient = new VkStreamingApiClient(transportClient); //Create service actor Integer appId = 4123123; String accessToken = "sadf0asdf0asdfsadfassadf0asdf0asdfsadfassadf0asdf0asdfsadfas"; ServiceActor actor = new ServiceActor(appId, accessToken); //Get streaming actor GetServerUrlResponse getServerUrlResponse = vkClient.streaming().getServerUrl(actor).execute(); StreamingActor actor = new StreamingActor(getServerUrlResponse.getEndpoint(), getServerUrlResponse.getKey());
//Create rule String tag = "1"; String value = "ok"; StreamingResponse response = streamingClient.rules().add(actor, tag, value).execute();
//Get rules StreamingGetRulesResponse response = streamingClient.rules().get(actor).execute();
//Delete rule String tag = "1"; streamingClient.rules().delete(actor, tag).execute();

Implement handle method from StreamingEventHandler class for handling stream events

streamingClient.stream().get(actor, new StreamingEventHandler() < @Override public void handle(StreamingCallbackMessage message) < System.out.println(message); > >).execute();

As an SDK usage example we have released the YouTrack bot. The documentation can be found here.

About

Java library for working with VK API

Источник

Читайте также:  Auto strafe css v34
Оцените статью