我使用 Basic Display API 实现了 Instagram 登录。如果用户在加载
https://api.instagram.com/oauth/authorize
请求时出现的 Web 视图中输入他们的 Instagram 凭据,一切正常。之后,我可以从 Instagram 帐户中提取用户的媒体。它告诉我一切都已正确实施。
现在,如果用户在 WebView 中选择“使用 Facebook 登录”选项并通过 Facebook 登录流程,当我在模拟器上运行它时一切仍然正常:在 Facebook 使用 2 因素身份验证完成其登录流程后,我最终得到重定向回调,从中解析代码,其余所有工作正常。
但在物理设备上同样失败。在我调用
https://api.instagram.com/oauth/access_token
获取带有获得的代码的令牌后,Instagram 应用程序立即启动,然后打开 Safari 并出现此错误:
{"message":"Logged-in use not
supported","status":"fail"}
什么给?这是令人难以置信的沮丧,一天被浪费了,不知道从这里去哪里。有什么想法吗?
更新: 它在设备上表现不同的原因是因为它安装了 Instagram 应用程序,并且当 Facebook 调用
https://www.instagram.com/accounts/signup/...
端点返回 Instagram 身份验证流程时启动该应用程序(我正在观察来自 WkWebView 的请求)。 Instagram 应用程序会在上面抛出该错误,而在模拟器上,Instagram 后端似乎可以很好地为端点提供服务,并且流程会继续进行。
所以问题是如何让 Instagram 应用程序脱离循环。
更新2: 已确认 - 一旦我从设备上删除了 Instagram 应用程序,它就会按预期运行。一旦我重新安装它,它就会在 Facebook 的身份验证流程中再次启动,问题又回来了。这似乎是 Instagram 应用程序中的错误,我没有其他解释。
好吧,在经历了很多死胡同和模糊不清的兔子洞之后,我疯狂地往下走,我得出结论,真正的问题是 Instagram 应用程序中的错误。正如我的问题更新中所述,在我删除 Instagram 后,流程开始正常工作。
还没有准备好下结论 我尝试了 Appstore 中具有连接到 Instagram 功能的其他一些应用程序。他们都以完全相同的方式失败。具体来说,如果您在 Instagram 登录 WebView 上选择“继续使用 Facebook”,您最终会启动 Instagram 应用程序(如果已安装),这反过来会在 Safari 中引发错误,并且您会被卡住。
你知道最有趣的事情是什么吗?如果您下载 Instagram 应用程序本身并尝试使用相同的 Facebook 流程登录,它也会失败!
吸取的教训 - 在您怀疑自己在实施过程中犯了错误之前,请检查其他一些具有相同功能的应用程序,也许您会发现您并不孤单。
文档 说你应该向这个 URL 发送一个 POST 请求:
第 2 步:兑换代币代码
收到代码后,通过以下方式将其交换为短期访问令牌 向以下端点发送 POST 请求:
POST https://api.instagram.com/oauth/access_token
我不明白你为什么要将用户重定向到这个端点?
我遇到了完全相同的问题,唯一的解决方法是清除 WKWebView 的缓存和 cookie,因此用户应该再次重新输入登录名和密码。
所以在加载您的网络视图之前使用这个snippet