Авторизация Vk, access Token

453
24 января 2017, 22:08

Доброго времени суток хочу получить доступ к методам VK Api. Объясните пожалуйста, почему:

  1. В документации сказано, что в методе responseType должен быть указан параметр "code", чтобы в дальнейшем получить токен доступа. Но я могу его получить написав responseType("token"), зачем этот "code"?
  2. Почему-то "code", который приведен в документации отличается от моего, как будто часть моего "code" обрезана.

    public static void main(String... args) {
        final String clientId = "5811559"; // ID моего приложения Vk
        final String clientSecret = "ZOAAWpmdT6h4AGkSGGYV"; //Секретный ключ
        final OAuth20Service service = new ServiceBuilder()
                    .apiKey(clientId)
                    .apiSecret(clientSecret)
                    .callback("https://oauth.vk.com/blank.html ")
                    .scope("friends")
                    .responseType("code")
                    .build(VkontakteApi.instance());
    }

Должно получиться что-то такое:

REDIRECT_URI?code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a 

А выходит:

https://oauth.vk.com/blank.html#code=6b42804b417113a2af
Answer 1

Кратко.. VK OAuth API поддерживают 3 метода, первый и самый простой вы можете использовать одноэтапную авторизацию, т.е сразу в первом запросе вызвать значение TOKEN и продолжить получение данных. Есть и двухэтапная авторизация, при котором вы сначала получаете значение CODE после отправляете ещё один запрос для получения TOKEN по данному коду... всё зависит от того что вам нужно и как вы реализуете ваш проект. Что касается длины значения CODE, насколько помню таких коротких не должно быть, но вы можете отправить запрос на получения access_token и если CODE неправильный, то вам система ответит ошибкой что ваш CODE не верный..
P.S. старайтесь данные о своём application (clientId,clientSecret ) не писать публично! это секретная инфа ))

READ ALSO
Использовать метод другого класса

Использовать метод другого класса

Как можно использовать метод getActivityInstance в классе который реализован в другом классе:

302
Java IO. Как получить из BufferedInputStream сам буфер?

Java IO. Как получить из BufferedInputStream сам буфер?

Помогите разобраться я использую BufferedInputStream:

317
Fixtures in espresso

Fixtures in espresso

Кто применял фикстуры в своих тестах? И как правильно/можно их использовать? На сколько я понял, это значительно ускоряет процесс тестирования,...

319