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 でサインイン] ボタンをクリックすると承認が開始されますが、'auth' コールバックは起動しません。代わりに、コンソールに CORS エラーが表示されます。
「Uncaught SecurityError: Blocked a frame with origin " https://platform.linkedin.com " from the frame with origin ..."
他のすべての環境 (Chrome、FF、IE、デスクトップ Safari、Android ブラウザなど) は問題なく動作するようです。Chrome の開発ツールでユーザー エージェントを iOS デバイスに設定すると、問題を再現することもできます。これにより、JS SDK がユーザー エージェント スニッフィングを行っていると思われます。
回避策はありますか? LinkedIn 開発チームはこの問題を認識していますか? 月曜日の詳細を見逃しましたか?
PSこれはおそらく関連しています:Linkedinでサインインしても、JS APIを使用している場合、iOS Safariでコールバックがトリガーされません