使用 JS API 时,使用 Linkedin 登录不会在 iOS Safari 上触发回调

Sign in with Linkedin doesn't trigger callback on iOS Safari when using the JS API

我通过 JS API 在网站上使用 SignIn with Linkedin。它在我测试过的少数桌面浏览器(Chrome 和 FF Windows,MacOS 上的 Safari)和稍微过时的 Android Chrome 上运行良好。但它在 iOS Safari 上失败(我使用 iOS 7)。

问题是在 iOS Safari 上,作为参数传递给 IN.User.authorize 的回调未执行。

该行看起来像这样:IN.User.authorize(this._getProfileData, this);

_getProfileData 在上述桌面浏览器和 Android Chrome 上执行,但不在 iOS Safari 上执行。

甚至可以在没有 iOS 的情况下重现此问题:通过 Chrome 的开发人员工具,在 iPhone 和 iPad 的设备模式下。

有什么线索吗?

不幸的是,LinkedIn 的 JS SDK 与 iOS 5+ 不兼容,因为 Javascript 在跨 window 通信过程中暂停的方式。您将需要回退到服务器端 REST 调用以确保 100% 的平台兼容性。

自 2019 年 5 月 1 日起,此功能不再有效:https://engineering.linkedin.com/blog/2018/12/developer-program-updates

Sign In with LinkedIn: Sign In with LinkedIn enables members to choose a more convenient way to log-in to third party apps and allows those apps to learn more about their new user. This API will only recognize a new “Lite Profile” permission, which supports a reduced set of member profile fields. See the documentation for more details.

SDKs: Our JavaScript and Mobile Software Development Kits (SDKs) will stop working. Developers will need to migrate to using OAuth 2.0 directly from their apps.