Nano Hash - криптовалюты, майнинг, программирование

Войти с помощью Slack API, Android

Я интегрирую Slack Api: Sign in with Slack. У меня есть несколько вещей от Slack Api.

Мне тоже нужен параметр code.

В моем классе Activity я использую для этого WebView. Чтобы получить доступ к параметру code, в методе shouldOverrideUrlLoading я использовал:

public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.startsWith("http://localhost:8000/")) {
            UrlQuerySanitizer urlQuerySanitizer = new UrlQuerySanitizer(url);
            String CLIENT_CODE = urlQuerySanitizer.getValue("code");
            Log.e(TAG, "shouldOverrideUrlLoading: "+ CLIENT_CODE);
            loginPresenter.loginSuccess();
            return true;
        } else {
            view.loadUrl(url);
            return true;
        }
    }

Я создаю класс с именем HttpConstant, чтобы сохранить URL:

public class HttpsConstant {
    public static final String AUTHORIZATION_SLACK_URL = "https://slack.com/oauth/authorize?scope=identity.basic,identity.email,identity.avatar&client_id=something";
    public static final String TOKEN_URL = "https://slack.com/";
}

Я создаю класс под названием StrngConstant, чтобы сохранить это: CLIENT_ID, CLIENT_SECRET, CLIENT_CODE.

public final class StringConstant {
    public static final String CLIENT_ID = "something";
    public static final String CLIENT_SECRET = "something" ;
    public static final String CLIENT_CODE = "something but still does not 
         able to pass the code parameter here from my activity class";
}

Я использую Retrofit для службы входа в систему:

public interface LoginService {
    @GET("api/oauth.access?client_id=" + StringConstant.CLIENT_ID + 
    "&client_secret=" + StringConstant.CLIENT_SECRET + 
    "&code="+ StringConstant.CLIENT_CODE)
    Call<LoginResponse> getLoginToken();
}

Я пытался использовать метод SharedPreferences в shouldOverrideUrl, но не смог.

SharedPreferences preferences = getSharedPreferences("ClientCode", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Code", CLIENT_CODE);
editor.commit();

Как я могу передать параметр code в службу входа в систему? Как я могу использовать этот SharedPreferences, чтобы получить доступ к параметру code? Или есть ли другой способ получить параметр code и использовать его?


Ответы:


1

Вы только что установили общие настройки и не попали в LoginService.

У вас есть как в LoginService

public interface LoginService {


SharedPreferences preferences = getSharedPreferences("ClientCode", Context.MODE_PRIVATE);

    @GET("api/oauth.access?client_id=" + StringConstant.CLIENT_ID + 
    "&client_secret=" + StringConstant.CLIENT_SECRET + 
    "&code="+ preferences.getString("Code",""))
    Call<LoginResponse> getLoginToken();
}

Сходство нужно установить и получить для client_id и client_secret.

03.03.2017
  • Внутри этого класса LoginService; getSharedPreferences не может быть разрешен, он тоже так говорит. 03.03.2017
  • интерфейс предназначен для объявления, а не для подробной реализации. Поэтому используйте активность, фрагмент или статическую функцию в этом проходе Contex 03.03.2017
  • Вот почему я использовал класс StringConstant. 03.03.2017
  • но вы взяли конечную переменную. его значение не может быть изменено. твой путь не правильный. вы должны использовать функцию, а не интерфейс, где вы должны динамически передавать параметры 03.03.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..