LinkedIn JS SDK 似乎存在错误。您可以使用他们在文档的“入门”部分中提供的代码进行复制。
<!DOCTYPE html>
<html>
<head>
<title>LinkedIn test</title>
<script>
// Setup an event listener to make an API call once auth is complete
function onLinkedInLoad() {
IN.Event.on(IN, "auth", getProfileData);
}
// Handle the successful return from the API call
function onSuccess(data) {
console.log(data);
}
// Handle an error response from the API call
function onError(error) {
console.log(error);
}
// Use the API call wrapper to request the member's basic profile data
function getProfileData() {
IN.API.Raw("/people/~").result(onSuccess).error(onError);
}
</script>
<script type="text/javascript" src="//platform.linkedin.com/in.js">
api_key: [API_KEY]
onLoad: onLinkedInLoad
</script>
</head>
<body>
<script type="in/Login"></script>
</body>
</html>
如果您将此代码放在非 https 网站上并在 iOS Safari 上点击该 URL,则单击“使用 LinkedIn 登录”按钮将启动授权,但“身份验证”回调将永远不会触发。相反,您会在控制台中收到 CORS 错误:
“未捕获的 SecurityError:阻止具有来源的框架“ https://platform.linkedin.com ”访问具有来源的框架......”
所有其他环境似乎都可以正常工作(例如 Chrome、FF、IE、桌面 Safari、Android 浏览器等)。如果我在 Chrome 的开发工具中将用户代理设置为 iOS 设备,我也能够重现该问题,这让我认为 JS SDK 正在执行用户代理嗅探。
有解决方法吗?LinkedIn 开发团队是否意识到这个问题?我错过了星期一的细节吗?
PS这可能是相关的:Sign in with Linkedin doesn't trigger callback on iOS Safari when using the JS API