Показать сообщение отдельно
  #3  
Старый 27.08.2017, 19:04
Shaft Shaft вне форума
Новичок
 
Регистрация: 15.05.2013
Сообщения: 74
Версия Delphi: 7/10.4
Репутация: 12
По умолчанию

В общем дело такое, что код на пыхе не работает. Нашел на одном форуме что раньше он работал а сейчас нет. Специально повесил Апач и проверил.

Первые 2 обращения к postData думаю верны. Пробовал в них менять значения и происходит ошибка. Да и authToken сервер присылает.
Судя по всему третий запрос не правильно формируется. Расковырял .apk оригинального приложения. Вот код формирования третьего запроса
Код:
private String encodeBasicAuth(String paramString1, String paramString2)
  {
    return Base64Utils.encode(paramString1 + ":" + paramString2);
  }
  
  public TokenResponse authenticate(String paramString)
  {
    try
    {
      URIBuilder localURIBuilder = new URIBuilder().base(String.format("https://%s/token", new Object[] { this.endpointProvider.get() }));
      paramString = new URIBuilder().param("grant_type", "authorization_code").param("code", paramString).param("redirect_uri", (String)this.redirectUrlProvider.get()).build();
      Object localObject = encodeBasicAuth((String)this.clientIdProvider.get(), (String)this.clientSecretProvider.get());
      localObject = ac.b("Authorization", "Basic " + (String)localObject);
      paramString = new HttpDriver.RequestBody("application/x-www-form-urlencoded; charset=utf-8", paramString.getBytes());
      paramString = this.http.postAsJson(TokenResponse.class, localURIBuilder.build(), (Map)localObject, paramString);
      if (paramString.isSuccessful()) {
        return (TokenResponse)paramString.getContent();
      }
      Log.severe("Failed authorization attempt, " + paramString);
      throw new NetworkException(paramString);
    }
    catch (IOException paramString)
    {
      Log.severe("Error attempting to refresh, err=" + paramString);
      throw new NetworkException(598, paramString.getMessage());
    }
  }
Некоторые константы:
endpointProvider = auth.riotgames.com
redirectUrlProvider = http://localhost/oauth2-callback
clientIdProvider = leagueconnect
clientSecretProvider = amVYw7iK_qSaGUNqxRvzgs16EMgdEUdu1mDVdMNJDC4
paramString который передается в функцию, это authToken полученный после второго запроса

Тут я совсем не силен. Если кто знает подскажите как эта функция формирует запрос.
Все что я смог это
Код:
function encodeBasicAuth(s1,s2:string):string;
begin
  Result:=EncodeBase64(s1+':'+s2);
end; 
Ответить с цитированием