如何获取URL方案myapp://使用Instagram API重定向uri

joe*_*k16 7 android ios react-native

我是移动开发的新手.

我有一个具有Instagram身份验证的应用程序.

我的URL方案正在运行.当我打开Safari并键入myapp://它打开应用程序.

当我尝试myapp://在Instagram API中添加重定向网址时,它会出错Enter a valid website.

如何让此重定向网址生效?作为Instagrams重定向URI,我应该怎么做?

先感谢您.

Nap*_*apa 3

首先,这个问题只存在于ios,而不是android,因为在android中我们可以保存这样的url方案:在http://myAppAndroidManifest.xml文件中,它是instagram形式的有效重定向url https://www.instagram.com/对于

ios,我们需要这样的东西:http//myApp://,它在 safari 中工作正常,但不是 instagram 形式的有效 url

在我的情况下,以下是我遇到类似问题时应用程序的状态:

  • 我正在使用react-native的Linking api在浏览器中打开instagram登录页面;
  • 使用正确的登录凭据提交表单后,我可以在浏览器中看到带有 access_token 的新页面,如下所示:http://myApp/#access_token=asa2dcc...'
  • 但后来它从未从浏览器重定向回我的应用程序

因此,我能够获取令牌,但它不会自动重定向回我的应用程序。因此,我手动处理了此重定向部分,如下所示:

  • 首先,我使用了react-native的WebView api而不是Linking;它的作用是在您的应用程序中而不是在浏览器中打开一个Web视图,这样您就可以完全控制应用程序内的导航
  • 我没有在 instagram/开发者网站上为 ios 添加任何重定向网址,我为 android 添加的重定向网址就足够了
  • 解决这个问题的关键是获取这个prop,我可以在其中使用 access_token 获取 url,以便可以将其取出并用于进一步的 api 调用
  • 我使用React-navigation使用 WebView 导航到屏幕,并传递了一个回调,该回调将接收一个令牌,该令牌又可用于进行其他 api 调用:

    navigation.navigate('InstaWebView', {
      callback: (err, access_token) => {
        if (!access_token) { 
          return Alert.alert('Error in fetching insta token');
        }
        // make api calls
      },
    }); 
    
    Run Code Online (Sandbox Code Playgroud)


  • InstaWebView组件从渲染函数返回以下 WebView:

    <WebView
          ref={WEBVIEW_REF}
          style={{ flex: 1 }}
          onNavigationStateChange={
              this.onNavigationStateChange.bind(this)
          }
          source={{ uri: instaUrl }}
          onError={() => {
            Alert.alert('Error in loading WebView..Please try again');
            return navigation.goBack();
          }}
        /> 
    
    Run Code Online (Sandbox Code Playgroud)


查看此代码以获得更多帮助

希望这对某人有帮助!