Capacitor4+Ionic6项目API32调用LinkedIn接口遇Secure Cookie错误求助
问题根源
目标API级别32(Android 11/R)的安全Cookie策略明确规定:不能为HTTP协议的域名设置带Secure属性的Cookie。而LinkedIn API早已全面切换到HTTPS协议,你的请求大概率仍在使用HTTP,或者WebView的Cookie配置存在冲突。
解决方案
1. 强制所有LinkedIn API请求使用HTTPS
检查项目中所有调用LinkedIn的URL(包括授权地址、接口地址),将http://linkedin.com及其子域名替换为https://linkedin.com。LinkedIn已不再支持HTTP请求,这是最根本的解决方式。
2. 调整Android WebView的Cookie配置
在Android项目的MainActivity.java(路径:android/app/src/main/java/[你的包名]/MainActivity.java)中添加Cookie策略配置:
import android.webkit.CookieManager; import android.os.Build; import android.os.Bundle; public class MainActivity extends BridgeActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { // 允许第三方Cookie CookieManager.getInstance().setAcceptThirdPartyCookies(getWebView(), true); // 为LinkedIn域设置正确的Cookie属性(仅当确认用HTTPS时生效) CookieManager.getInstance().setCookie("linkedin.com", "Secure; SameSite=None"); } } }
3. 检查LinkedIn开发者应用配置
登录LinkedIn开发者后台,确保:
- 应用的**重定向URI(Redirect URI)**使用HTTPS协议
- 重定向URI与Capacitor项目中OAuth插件(如
@capacitor-community/oauth2)配置的地址完全一致
4. 清除旧缓存和Cookie
测试前清除App的缓存与Cookie,避免旧的HTTP Cookie残留影响:
adb shell pm clear com.your.app.package
内容的提问来源于stack exchange,提问作者Wasim
相关产品推荐
相关产品推荐

