Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
galaid
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
1

OAuth - авторизация Вконтакте

24.04.2013, 21:36. Просмотров 2804. Ответов 3
Метки нет (Все метки)

Всем привет. При попытке создания авторизации руководстовался данным источником.

Вот, что получилось:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function URL: string;
var
  S: string;
begin
  S:='https://oauth.vk.com/authorize?';
  S:=S+'client_id=0000000&'; {данная строка заменена}
  S:=S+'scope=&';
  S:=S+'redirect_uri=https://oauth.vk.com/blank.html&';
  S:=S+'display=page&';
  S:=S+'response_type=token';
  Result:=S;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.WebBrowser1.Silent:=TRUE;
  Form1.WebBrowser1.Navigate(URL);
end;
При запуске программы авторизация происходит. Но что делать дальше? Каким образом можно получить этот ACCESS_TOKEN?

P.S. Гугл не помог, т.к. найденная информация по этой теме (Авторизация ВК) является устаревшей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 21:36
Ответы с готовыми решениями:

Авторизация ВКонтакте
Здравствуйте!Подскажите пожалуйста как сделать так что бы я например через...

Авторизация вконтакте
Доброго времени суток! В общем пытаюсь авторизоваться вконтакте через Delphi...

Авторизация Вконтакте
Подскажите я делаю прогу для ВК и в ней надо будет авторизироваться логи и...

Авторизация вконтакте
procedure TForm5.btn1Click(Sender: TObject); var...

Авторизация вконтакте
Здравствуйте, вот такой вопрос: Данные ввожу раз 10, всё правильно, а все...

3
Vedern
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 2
29.05.2013, 17:43 2
Вот на этом моменте я был и застрял Я долго думал как получить этот самый access_token. Для этого можно использовать C_URL и, что само просто, можно использовать встроенную функцию file_get_contents( );. При помощи этой функции мы получаем access_token, expires_in - время жизни ключа в секундах и user_id - порядковый номер текущего пользователя в виде json массива. Вот примерно как это будет выглядеть:

{"access_token":"533bacf01e11f55b536a565b57531ac114461ae8736d6506a3", "expires_in":43200, "user_id":6492}.

Но такое представление данных нам не очень подходит. Нам бы получить обычный массив, извлечь с него данные и присвоить их переменным. Здесь тоже всё просто. Воспользуемся функцией json_decode( );. Получим обычный массив и извлечём с него нужные нам данные.

http://webinby.ru/novye-uroki/sozday....-chast-2.html

Добавлено через 7 минут
Правда тут используется PHP.

Я уперся в БОЛЬШУЮ ПРОБЛЕМУ.


Тип приложения - пробовал и "Веб-сайт", и "Standalone"
При запросе на авторизацию указываю параметры scope=friends,photos
Пользователь видит диалог, предлагающий разрешить доступ к друзьям и фото, жмет "Разрешить".
Получаю acces_token,

ПРОБЛЕМА
VK API не возвращает никакой информации по запросу method/users.get?fields=sex,photo,photo_100,rate, кроме стандартных полей uid, first_name, last_name.

Какие бы параметры fields я не передавал в метод users.get,
возвращаются всегда только 3 значения - id пользователя, имя и фамилия.

Вот результат через функцию var_dump:
array(1) { [0]=> object(stdClass)#3 (3) { ["uid"]=> int(ИД) ["first_name"]=> string(18) "ИМЯ" ["last_name"]=> string(16) "ФАМИЛИЯ" } }

Проверил права доступа с помощью getUserSettings - возвращает 0. То есть сервер ВК не предоставляет мне доступа к информации пользователя, указанной при авторизации в параметре scope.

Не могу понять в чем дело. Помогите разобраться.
0
galaid
289 / 34 / 6
Регистрация: 20.09.2011
Сообщений: 464
29.05.2013, 19:08  [ТС] 3
Vedern,
Цитата Сообщение от Vedern Посмотреть сообщение
method/users.get?fields=sex,photo,photo_100,rate
если я вас правильно понял, то нужно делать так:
PHP
1
https://api.vk.com/method/METHOD_NAME?PARAMETERS&access_token=ACCESS_TOKEN
Вобщем access_token должен быть в запросе. Методов, которыми можно пользоваться без этого токена, очень мало.
0
Vedern
0 / 0 / 0
Регистрация: 29.05.2013
Сообщений: 2
29.05.2013, 19:28 4
естественно, accesstoken есть в запросе (иначе бы запрос возвращал ошибку)

вот полный текст запроса:

$UserProfileArray = json_decode(
@file_get_contents("https://api.vk.com/method/users.get?uids={$gotToken->user_id}&access_token={$gotToken->access_token}
&fields=sex,photo_big,photo_100,relation,interests,movies,tv,books,games,rate,about&lang=ru"))->response;

В том-то и дело, что запрос к АРI успешен, приходят имя и фамилия юзера.
А вот остальная информация не выдается, как будто к ней нет доступа. И это несмотря на то, что при авторизации параметр scope был прописан:
"https://oauth.vk.com/authorize?client_id=XXX&redirect_uri=http://YYY.ru/auth_result.php&scope=friends,status,photos&display=page"

Добавлено через 1 минуту
Я получаю json строку { ["uid"]=> int(ИД) ["first_name"]=> string(18) "ИМЯ" ["last_name"]=> string(16) "ФАМИЛИЯ" }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2013, 19:28

Авторизация Вконтакте Delphi+Synapse
И снова здрасте) Вот решил провести авторизацию вконтакте, и наконец таки...

Авторизация в Вконтакте для выполнения API
Привет всем. Мне нужно авторизоваться в VK чтобы выполнять методы API...

Авторизация Вконтакте через idHttp не работает
Пытаюсь зайти в вк через idHttp, но не работает. Как это можно сделать, есть у...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru