我是移动开发新手。
我有一个具有 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/