React Native Instagram 显式身份验证

Posted

技术标签:

【中文标题】React Native Instagram 显式身份验证【英文标题】:React Native Instagram Explicit Authentication 【发布时间】:2016-11-23 00:19:28 【问题描述】:

我正在创建一个反应原生应用程序并向其添加 instagram 身份验证。我希望用户能够将他们的 instagram 帐户“添加”到他们的主用户帐户,所以我有一个“连接你的 instagram”按钮。

我的网络应用程序正常工作。流程如下:

    用户单击“连接 instagram”按钮并打开一个新窗口并定向到https://instagram.com/oauth/authorize/?client_id=xxxx blah blah 用户通过 CODE 参数进行身份验证和 instagram 重定向到我的 REDIRECT_URI 我的 API 服务器接受 CODE 参数并向 instagram 发送包含所有凭据的发布请求。 Instagram 验证此信息并将用户提供给我ACCESS_TOKEN

谁能告诉我这应该如何在应用程序中工作?

我的REDIRECT_URI 应该是什么?服务器接口?

它与我的网络应用程序的流程相同吗?如果是这样,我如何在窗口关闭后让用户回到我的应用程序。我的应用如何知道用户现在拥有访问令牌?

【问题讨论】:

我不能肯定地说这是“最好的”方式,但我认为在这种情况下,你会让你的 webapp 成为使用 instagram 作为授权源的 oauth 提供程序(意味着app 从来不知道它直接使用 instagram)。因此,您的应用程序将使用您的 API 初始化 oauth 流,API 将执行 instagram 流,并向应用程序发出对您的 API 有效的令牌。然后调用您的应用程序需要通过您的 API 进行 instagram。 【参考方案1】:

对于本机应用程序,流程类似于您为 Web 应用程序描述的流程。

Auth0 Mobile + API architecture scenario 描述了当您需要对移动应用程序的用户进行身份验证,然后代表该用户访问 API 时会发生什么。

总结

您将继续使用授权码授予; 如果相关授权服务器支持它,您应该使用 PKCE (Proof Key for Code Exchange by OAuth Public Clients) 来增加安全性; 您需要选择在本机应用程序中接收代码的方式; 您可以使用自定义方案com.myinstaapp:、带有http: 方案的本地网络服务器或其他一些选项(有关其他选择,请参阅OAuth redirect URI for native application 上的此答案) 您将本机应用程序获得的代码与访问令牌交换,方式与您为 Web 应用程序所做的类似; (除了使用通常对本地应用程序无用的客户端机密,因为它们很容易泄露)

附加信息

Auth0 场景中描述的流程假定身份验证将通过符合 OpenID Connect 的流程进行,此外,您将获得 OAuth2 指定的访问令牌。我对 Instagram 不太熟悉,所以如果他们只支持 OAuth2,那这部分当然不适用。

【讨论】:

以上是关于React Native Instagram 显式身份验证的主要内容,如果未能解决你的问题,请参考以下文章

从使用 Expo SDK 构建的 React-Native 应用程序将照片分享到 Instagram

如何通过链接将视频直接分享到 facebook/instagram 作为可以使用 react-native 直接播放的视频

在 React Native 上通过 Auth0 进行 Instagram 身份验证(不是登录)?

React Native - MapView 是不是只接受显式标记?

React-Native:React Native是基于React设计的

[深入剖析React Native]React 初探