无法使用非https网址在iOS Safari上使用LinkedIn JS SDK进行授权

时间:2015-08-17 20:48:00

标签: mobile-safari linkedin linkedin-jsapi

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上点击该网址,点击“使用LinkedIn登录”按钮将启动授权,但“auth”回调将永远不会触发。相反,您将在控制台中收到CORS错误:

  

“Uncaught 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

2 个答案:

答案 0 :(得分:2)

根据LinkedIn的Getting Started with the JavaScript SDK页面,LinkedIn JavaScript SDK不支持iOS 5 +。

  

注意:JavaScript SDK与iOS 5 +不兼容。

答案 1 :(得分:0)

@degrassesagan我认为您需要执行以下操作:

function onLinkedInLoad() {
  IN.Event.on(IN,"auth",getProfileData);
  IN.Event.on(IN,"success",onSuccess);
  IN.Event.on(IN,"error",onError);
}

我发现,与LinkedIn JS SDK相关的问题也存在。我使用的是移动版Safari 10.3.3,虽然登录业务逻辑正确执行,但URL流却没有。 成功登录后,该页面将转到LinkedIn“未找到页面”。页面,而不是关闭当前的浏览器标签,以显示下面的所有者页面?

我不确定这是否与原始问题有关,但如果有人能够解决这个问题,我将不胜感激。