【问题标题】:Android WebView with token cannot access to the account带有令牌的Android WebView无法访问该帐户
【发布时间】:2015-09-25 13:21:09
【问题描述】:

我尝试通过 WebView 访问我的网站,但在向我的用户显示 WebView 之前,他们必须输入用户名和密码,然后他们才能在 WebView 中看到他们的帐户仪表板。 问题是实际上我可以保留我的 auth_token 并将其存储到 SharedPreferences 中,但是在我如何对我的 webview 说这个用户已经完成登录并且已经拥有 auth_token 之后? 我会允许我的用户在我的 android 应用程序上使用该网站。 这是代码: 公共类 Login_Page 扩展 Activity{ 私有 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);
}
}

【问题讨论】:

    标签: android webview token android-sharedpreferences


    【解决方案1】:

    我修复了这个问题并重写了代码,这里是我修改的内容:

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

    我希望这可以帮助某人。 谢谢。

    【讨论】:

    • setAcceptThirdPartyCookies 方法支持 min 21 api 级别
    猜你喜欢
    • 2012-05-27
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2015-11-03
    • 1970-01-01
    • 2022-10-21
    相关资源
    最近更新 更多