应用传输安全 ios 9 和 instagram api

App Transport Security ios 9 and instagram api

我对 instagram API 和 iOS 9 有疑问。 我的应用程序在 iOS 8 上运行正常,但在 iOS 9 上运行不正常。 当我尝试在 instagram

中授权用户时收到此错误

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

我尝试了很多变体,例如这个问题App Transport Security breaks Web View

请帮帮我!

这是针对 ATS 的,如果你使用 xcode 7 它将嵌入 ATS 功能,尝试使用版本 7 构建而不是像 6.1 xcode,你可以 运行 它在 ios9 台设备上并且对 http 的调用将起作用。

Apple 这样做是出于重要的安全原因,最终有必要在应用程序更新中启用传输安全。使用旧版本会完全禁用它。这为我修复了 Xcode7:

在您的 Info.plist 文件中,添加 instagram.com 和子域作为 ATS 规则的例外,如下所示:

<key>NSExceptionDomains</key>
    <dict>
        <key>instagram.com</key>
        <dict>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
            <key>NSIncludesSubdomains</key>
            <true/>
        </dict>
    </dict>
</dict>

有关此操作的更多信息记录在 Apple 的传输安全 technote

几乎是正确的。但是 Info.plist 中有几个附加项是加载 Instagram 图像所必需的。

再次说明所有键的说明可以在ATS technotes.
中找到 确保您使用的是 https: 网址。

另请注意有用的调试命令:
/usr/bin/nscurl --ats-diagnostics --verbose YOUR_URL

下面是让我的应用程序从 instagram 下载图片的配置: