hbzhaoyf 2015-08-07 06:14 采纳率: 0%
浏览 1442

Andriod 和 H5混合开发 身份验证问题

在Andriod 开发的APP中嵌入另外一个H5开发的系统,通过webview方式嵌入的。
在Andriod APP中登录以后可以免登陆进入到H5系统,想问下我在H5中怎么认证用户已经在Andriod APP已经登录过了,不是非法的访问。

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 04:18
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要解决这个问题,您需要在Android应用和Webview之间建立一个安全的身份验证机制。这可以通过以下步骤来实现:

    1. 在Android应用中安装第三方库(例如:okhttp),以便发送HTTP请求到Web服务器。
    2. 从Android应用中获取用户的ID、密码等敏感信息,并将其保存在本地数据库或文件中。
    3. 在Webview中创建一个新的HTTP请求,并将用户ID作为查询参数传递给Web服务器。
    4. 使用HTTPS协议进行通信,以确保数据的安全传输。
    5. 接收Web服务器返回的数据,并检查是否包含有效的令牌或其他身份验证信息。
    6. 如果存在有效的身份验证信息,则允许用户进入H5界面;否则,拒绝访问并提示用户重新登录。

    以下是一个简单的示例代码片段,展示了如何使用OkHttp向Web服务器发送POST请求并将用户ID作为查询参数:

    import okhttp3.*;
    
    public class LoginWebView {
        private static final String WEBVIEW_URL = "https://example.com/login";
    
        public void login(String userId) throws IOException {
            OkHttpClient client = new OkHttpClient();
            RequestBody body = new FormUrlEncodedBuilder()
                    .add("userId", userId)
                    .build();
    
            Request request = new Request.Builder()
                    .url(WEBVIEW_URL)
                    .post(body)
                    .build();
    
            try (Response response = client.newCall(request).execute()) {
                if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
                System.out.println(response.body().string());
            }
        }
    }
    

    在这个例子中,我们首先创建了一个OkHttpClient对象,然后定义了一个RequestBody,其中包含了我们需要传递给Web服务器的查询参数。然后,我们构建了一个Request对象,这个对象包含了我们的URL和我们要发送的请求体。最后,我们使用OkHttpClient的newCall方法发送了这个请求。

    请注意,这只是一个基本的例子,实际的解决方案可能需要根据您的具体需求进行调整。此外,为了提高安全性,请确保在处理用户输入时遵循最小权限原则,并且只在必要时才存储用户的个人信息。

    评论

报告相同问题?