Я интегрирую Slack Api: Sign in with Slack
. У меня есть несколько вещей от Slack Api
.
- Идентификатор клиента: «что-то»
- Секрет клиента: «что-то»
- URL авторизации: https://slack.com/oauth/authorize
- URL токена: https://slack.com/api/oauth.access
- область применения: определить
Мне тоже нужен параметр 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
и использовать его?