Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2014, 16:56   #1
Fiesko
Пользователь
 
Регистрация: 09.06.2012
Сообщений: 24
По умолчанию Редирект и параметры в ссылке


Сама ссылка редиректа выглядит так:
Код:
https://oauth.vk.com/blank.html#access_token="токен"&expires_in=0&user_id="Айди"
Каким образом можно ее отловить?
Fiesko вне форума Ответить с цитированием
Старый 26.04.2014, 17:05   #2
Fiesko
Пользователь
 
Регистрация: 09.06.2012
Сообщений: 24
По умолчанию

Вот так вот правильно будет, при том, что ссылка
Код:
https://oauth.vk.com/blank.html
используется только один раз?
Код:
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: string;
  var NumRedirect: Integer; var Handled: Boolean; var VMethod: string);
begin
if Pos('https://oauth.vk.com/blank.html', idHTTP1.Response.Location) <>0 then
ShowMessage(idHTTP1.Response.Location);
end;
Fiesko вне форума Ответить с цитированием
Старый 26.04.2014, 17:09   #3
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Складывается чёткое ощущение, что половина информации из задачи было проглочено. Попробуйте задать вопрос ещё раз. Только не тупо повторить, а объяснить.
XE5 вне форума Ответить с цитированием
Старый 26.04.2014, 17:19   #4
Fiesko
Пользователь
 
Регистрация: 09.06.2012
Сообщений: 24
По умолчанию

Цитата:
Сообщение от XE5 Посмотреть сообщение
Складывается чёткое ощущение, что половина информации из задачи было проглочено. Попробуйте задать вопрос ещё раз. Только не тупо повторить, а объяснить.
Нужно получить access_token для использования API ВКонтакте.
После того как прошел процедуру авторизации и разрешил доступ приложению:

происходит редирект, в ссылке которого находятся нужные мне параметры, которые нужно вытащить:

Сама ссылка редиректа выглядит так:
Код:
https://oauth.vk.com/blank.html#access_token="токен"&expires_in=0&user_id="Айди"
В сообщении выше, я попробовал это реализовать, но не уверен, что это правильно.
Код немного обновлен:
Код:
procedure getParams(url: string);
begin
  access_token := url;
  Delete(access_token, 1, pos('#access_token=', access_token) + length('#access_token=') - 1);
  Delete(access_token, pos('&', access_token), length(access_token));
  user_id := url + '"';
  Delete(user_id, 1, pos('&user_id=', user_id) + length('&user_id=') - 1);
  Delete(user_id, pos('"', user_id), length(user_id));
end;

procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: string;
  var NumRedirect: Integer; var Handled: Boolean; var VMethod: string);
begin
  if pos('https://oauth.vk.com/blank.html', IdHTTP1.Response.Location) <> 0 then
  begin
    getParams(IdHTTP1.Response.Location);
    ShowMessage('access_token: ' + access_token + ' | ' + 'user_id: ' + user_id);
  end;
end;

Последний раз редактировалось Fiesko; 26.04.2014 в 17:26.
Fiesko вне форума Ответить с цитированием
Старый 26.04.2014, 19:55   #5
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Цитата:
но не уверен, что это правильно
Код:
function ParseURL(T_, ForS, _T: string): string; 
var a, b: integer;
begin
Result := '';
if (T_ = '') or (ForS = '') or (_T = '') then Exit;
a := Pos(T_, ForS);
if a = 0 then Exit else a := a + Length(T_);
ForS := Copy(ForS, a, Length(ForS) - a + 1);
b := Pos(_T, ForS);
if b > 0 then Result := Copy(ForS, 1, b - 1);
end;
Применение

Код:
s := ParseURL('access_token="', IdHTTP1.Response.Location, '"');
Пойдёт?

Последний раз редактировалось XE5; 26.04.2014 в 20:01.
XE5 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать программу через параметры-значений и параметры-ссылок bufalo C# (си шарп) 3 14.12.2011 17:10
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Юрий62 Помощь студентам 1 04.12.2011 14:09
Параметры запуcка. как обрабатывать параметры вида -somecmd "?" Человек_Борща Общие вопросы Delphi 1 15.01.2011 15:48
ПАРАМЕТРЫ-КОНСТАНТЫ, НЕТИПИЗИРОВАННЫЕ ПАРАМЕТРЫ ПОДПРОГРАММ, МАССИВЫ И СТРОКИ ОТКРЫТОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2010 17:28
Как передать в поток параметры? И как из потока параметры достать? Anekdot Общие вопросы Delphi 2 19.02.2010 22:40