2017-03-03 5 views
0

Slack Api: Sign in with Slackを統合しています。私はSlack Apiからいくつか持っています。Slack Api、Androidでログイン

を識別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; 
     } 
    } 

私は、URLを保つためにHttpConstantというクラスますCLIENT_ID, CLIENT_SECRET, CLIENT_CODE

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呼ばれます。

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(); 
} 

私はshouldOverrideUrl方法でSharedPreferencesを使用してみましたが、使用することができませんでしてきました。

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

ログインサービスでcodeパラメータを渡すにはどうすればよいですか?このSharedPreferencesはどのように使用できますか?codeパラメータにアクセスできますか?または、他にもパラメータを取得してこれを使用する方法はありますか?

答えて

0

共有設定を設定していて、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のために取得しなければならないのです。

+0

このLoginServiceクラスの内部。 getSharedPreferencesを解決することはできません。 –

+0

インターフェイスは詳細な実装ではない宣言用です。そのパスでアクティビティまたはフラグメントまたは静的関数を使用するContex –

+0

そのため、StringConstantクラスを使用しました。 –