android - 如何获取 URL Scheme myapp ://to work with Instagram API redirect uri

标签 android ios react-native

我是移动开发新手。

我有一个具有 Instagram 身份验证的应用。

我的 URL 方案有效。当我打开 Safari 并输入 myapp:// 时,它会打开应用程序。

当我尝试将 myapp:// 添加为 Instagram API 中的重定向 URL 时,它出错并显示 Enter a valid website

如何让这个重定向 URL 起作用?作为 Instagram 重定向 URI,我应该有什么?

提前谢谢你。

最佳答案

首先,这个问题只存在于 ios,而不是 android,因为在 android 中我们可以保存这样的 url scheme:http://myApp 在 AndroidManifest.xml 文件中,这是一个有效的重定向instagram 形式的网址为 https://www.instagram.com/developer/

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

就我而言,以下是我遇到类似问题时我的应用程序的状态:

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

所以,我能够获得 token ,但它不会自动重定向回我的应用程序。所以我手动处理了这个重定向部分,如下所示:

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

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


  • 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();
          }}
        /> 
    


看看this code寻求更多帮助

希望这对某人有帮助!

关于android - 如何获取 URL Scheme myapp ://to work with Instagram API redirect uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969300/

相关文章:

ios - 将字符串从 TableView 单元格传递到 Swift 3 中的 View Controller

ios - iOS 上的 Google Places API 自动完成

react-native - 如何删除 react-native-swiper-flatlist 最后一个 swiper 点?

react-native - React Native 开发者菜单没有响应

android - 如何在android中使用tagsoup解析xml中的html内容

java - TimerTask vs Thread.sleep vs Handler postDelayed - 每N毫秒调用一次函数最准确?

java - Android : surfaceView cannot getHolder() in onCreate(), 必须在 onResume() 中

java - sqlite db android 没有正确添加用户

ios - subview 的 isHidden 和 remove 之间有什么区别?

javascript - 在react router v4中渲染子路由