带有令牌的Android WebView无法访问该帐户

时间:2015-09-25 13:21:09

标签: android webview token android-sharedpreferences

我尝试通过WebView访问我的网站,但在向用户展示WebView之前,他们必须输入用户名和密码,之后他们就可以在WebView中看到他们的帐户信息中心。 问题是,实际上我可以保留我的auth_token并将其存储到SharedPreferences中,但之后我可以对我的webview说这个用户已经完成了登录并且已经有了auth_token? 我允许我的用户在我的Android应用程序上使用该网站。 这是代码:     公共类Login_Page扩展Activity {     private SharedPreferences mPreferences;

String token="";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_page);
    mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE);}

public void LaunchWebView(View view) {
    WebView myWebView = (WebView) findViewById(R.id.myWebView);
    SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this);
    String token2= mPreferences.getString("auth_token","");

    HashMap<String, String> map = new HashMap<String, String>();

    String sessionCookie = "staging=" + token;
    map.put("auth_token",token2);

    myWebView.loadUrl("url", map);
}
}

1 个答案:

答案 0 :(得分:0)

我解决了这个问题并且我重写了代码,这里我修改了:

public class Login_Page extends Activity{
private SharedPreferences mPreferences;

String token="";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_page);
    mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE);

}

@SuppressLint("NewApi")
public void LaunchWebView(View view) {

    WebView myWebView = (WebView) findViewById(R.id.myWebView);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.getSettings().setSaveFormData(false);

    CookieSyncManager.createInstance(this);
    CookieSyncManager.getInstance().startSync();
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    CookieManager.getInstance().setAcceptThirdPartyCookies(myWebView, true);

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    String token2= mPreferences.getString("auth_token","");

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("x-auth-token", token2);
    myWebView.getSettings().setAppCacheEnabled(true);
    myWebView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view,String url) {
            view.loadUrl(url);
            return true;
        }
    });
    myWebView.loadUrl("https://www.photospotland.com/spots/where", map);
}
}

我希望这可以帮助别人。 感谢。