Ich integriere die Slack Api: Sign in with Slack
. Ich habe ein paar Dinge von Slack Api
.Einloggen mit Slack Api, Android
- ID Kunde: 'etwas'
- Client-Secret: 'etwas'
- Genehmigung Url: https://slack.com/oauth/authorize
- Token URL: https://slack.com/api/oauth.access
- -umfang: identifizieren
ich die Notwendigkeit code
Parameter auch.
In meiner Activity
Klasse verwende ich WebView
dafür. Für den Zugriff auf code
Parameter, in shouldOverrideUrlLoading
Methode, die ich verwendet:
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;
}
}
I Klasse machen genannt HttpConstant
URL zu halten:
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/";
}
I Klasse machen StrngConstant
nannte diese zu halten: 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";
}
I Retrofit
für Login-Dienst bin mit:
public interface LoginService {
@GET("api/oauth.access?client_id=" + StringConstant.CLIENT_ID +
"&client_secret=" + StringConstant.CLIENT_SECRET +
"&code="+ StringConstant.CLIENT_CODE)
Call<LoginResponse> getLoginToken();
}
Ich habe versucht, durch SharedPreferences
in shouldOverrideUrl
Methode verwendet, aber nicht in der Lage zu verwenden.
SharedPreferences preferences = getSharedPreferences("ClientCode", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("Code", CLIENT_CODE);
editor.commit();
Wie kann ich code
Parameter im Login-Service übergeben? Wie kann ich diese SharedPreferences
verwenden, damit ich auf den Parameter code
zugreifen kann? Oder gibt es eine andere Möglichkeit, den code
Parameter zu erhalten und diesen zu verwenden?
In dieser LoginService-Klasse; getSharedPreferences können nicht aufgelöst werden, das sagt es auch. –
Schnittstelle ist für die Deklaration nicht für Detail implementieren.So verwenden Aktivität oder Fragment oder statische Funktion in diesem Pass Contex –
Deshalb habe ich verwendet, StringConstant-Klasse. –