You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何将生成的Token传递至JavaScript SDK

在Android Studio中生成Token并传递给JavaScript SDK的解决方案

看起来你已经搞定了Token的生成,现在就差把它传给JS SDK这一步啦!下面我给你详细说下具体的实现步骤,都是Android和JS交互的常规操作,很容易上手的。


步骤1:在AsyncTask中正确获取并处理Token

首先,你需要在AsyncTask的onPostExecute方法里,从WebService的响应中解析出Token。这里假设你用的是OkHttp来发起请求,要是你用的别的网络库,调整一下就行:

private void requestCreateCheckout() {
    new AsyncTask<Void, Void, Response>() {
        @Override
        protected Response doInBackground(Void... voids) {
            try {
                // 构建请求,替换成你的WebService地址
                Request request = new Request.Builder()
                        .url("你的WebService接口地址")
                        .post(RequestBody.create(MediaType.parse("application/json"), "请求参数")) // 按需添加请求体
                        .build();
                
                OkHttpClient client = new OkHttpClient();
                return client.newCall(request).execute();
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        }

        @Override
        protected void onPostExecute(Response response) {
            super.onPostExecute(response);
            if (response != null && response.isSuccessful()) {
                try {
                    // 解析响应体,获取Token(根据你的接口返回格式调整)
                    String responseBody = response.body().string();
                    JSONObject jsonResponse = new JSONObject(responseBody);
                    String token = jsonResponse.getString("token"); // 替换成你接口返回的Token字段名

                    // 拿到Token后,调用方法传给JS
                    passTokenToJavascript(token);
                } catch (IOException | JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    }.execute();
}

步骤2:通过WebView将Token注入到JavaScript

Android和JS交互最常用的方式就是用WebView的evaluateJavascript方法,它能安全地调用JS函数并传递参数:

private void passTokenToJavascript(String token) {
    WebView webView = findViewById(R.id.your_webview_id); // 替换成你的WebView控件ID
    // 确保WebView已经初始化并且页面加载完成
    if (webView != null && webView.getSettings().getJavaScriptEnabled()) {
        // 构造JS代码,调用前端的初始化函数
        // 注意:如果Token包含特殊字符,用JSON.stringify来转义更安全
        String safeToken = new JSONObject().put("token", token).toString();
        String jsCode = String.format("initializeSDK(%s);", safeToken);

        webView.evaluateJavascript(jsCode, new ValueCallback<String>() {
            @Override
            public void onReceiveValue(String value) {
                // 可选:接收JS返回的结果,用于确认Token是否传递成功
                Log.d("Android-JS", "Token传递结果:" + value);
            }
        });
    }
}

步骤3:在JavaScript中接收Token并初始化SDK

在WebView加载的HTML/JS文件里,定义一个全局函数来接收Android传递过来的Token,然后初始化你的SDK:

// 全局函数,用于接收Android传递的Token
function initializeSDK(data) {
    const token = data.token;
    // 用拿到的Token初始化你的JavaScript SDK
    yourSDKInstance.init({
        authToken: token,
        // 其他SDK所需的配置参数
    });

    // 可选:返回结果给Android,确认Token已接收
    return "Token接收成功,SDK已初始化";
}

关键注意事项

  1. 开启WebView的JavaScript支持:在初始化WebView的时候,一定要开启JS支持,否则交互会失败:

    webView.getSettings().setJavaScriptEnabled(true);
    
  2. 等待页面加载完成再传递Token:最好在WebView的onPageFinished回调里确认页面加载完成后,再调用传递Token的方法,避免JS函数还没定义就被调用:

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            // 页面加载完成后,再执行Token传递操作(或者在拿到Token后再调用)
        }
    });
    
  3. 安全处理Token:Token是敏感信息,确保WebView只加载你信任的页面,防止Token被恶意页面窃取。另外,传递Token时用JSON.stringify转义特殊字符,避免JS语法错误。

内容的提问来源于stack exchange,提问作者zam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:49:26