Javascript 在React Native中从应用程序本身的Web视图重定向到移动应用程序
我正在构建一个android应用程序,它需要来自外部身份验证提供者的身份验证。所以我使用这个包来处理这个问题 定义的重定向uri是一个深度链接,理想情况下,它应该在成功身份验证后打开我的应用程序本身。但是WebView似乎无法处理此重定向,我得到的响应是404页面未找到 这是我为处理身份验证而编写的服务:Javascript 在React Native中从应用程序本身的Web视图重定向到移动应用程序,javascript,android,react-native,webview,oauth-2.0,Javascript,Android,React Native,Webview,Oauth 2.0,我正在构建一个android应用程序,它需要来自外部身份验证提供者的身份验证。所以我使用这个包来处理这个问题 定义的重定向uri是一个深度链接,理想情况下,它应该在成功身份验证后打开我的应用程序本身。但是WebView似乎无法处理此重定向,我得到的响应是404页面未找到 这是我为处理身份验证而编写的服务: const manager = new OAuthManager('<app_name>') manager.addProvider({ 'pr
const manager = new OAuthManager('<app_name>')
manager.addProvider({
'provider': {
auth_version: '2.0',
authorize_url:'<auth-url>',
access_token_url: '<auth-url>/token',
callback_url: 'http://localhost/provider',
}
});
manager.configure({
provider: {
client_id: '<id>',
client_secret: '<secret>',
redirect_uri: '<redirect-uri>' //DEEP LINK HERE
}
});
module.exports = {
authManager: () => {
manager.authorize('<provider>')
.then(resp => console.log(resp))
.catch(err => console.log(err));
}
}
const manager=new OAuthManager(')。使用应用程序组件中的Linking.openURL()打开深度链接时,深度链接可以正常工作
非常感谢您在这方面提供的任何帮助。您不能直接将重定向uri设置为移动应用程序(因为大多数身份验证提供商不支持自定义OAuth方案)
但您可以创建一些网页,接受OAuth提供商的重定向,并打开您的应用程序(并发送所有重定向参数,如token
)
例如,您创建页面https://example.com/oauth/
,并将回调\u url
设置为https://example.com/oauth/XXXXX_provider
,所以当用户将被重定向到页面https://example.com/oauth/XXXXX_provider&token=xxx
它将使用appN打开您的应用程序ame://example/oauth/google?token=xxx
您可以处理appName://example/oauth/google?token=xxx
使用(安装在设备上时,将打开您的移动应用程序)
处理重定向的页面示例:
请稍候,我们正在将你重定向到你的应用程序名称
var redirectToApp=函数(){
var scheme=“appnameapp”;
var openURL=“appname”+window.location.pathname+window.location.search+window.location.hash;
var iOS=/iPad | iPhone | iPod/.test(navigator.userAgent);
var Android=/Android/.test(navigator.userAgent);
var新定位;
如果(iOS){
newLocation=scheme+“:”+openURL;
}else if(安卓){
newLocation=“intent://”+openURL+“#intent;scheme=“+scheme+”;package=com.appnameapp;end”;
}否则{
newLocation=scheme+“:/”+openURL;
}
console.log(newLocation)
window.location.replace(新位置);
}
window.onload=重定向到应用程序;
WebView默认不与Safari/Chrome共享cookie/session数据。因此,它不适合登录流,因为它不使用Chrome/Safari中现有的登录会话
Expo提供了一个将打开Safari/Chrome而不是webview的浏览器。请注意,它将在应用程序内部打开Safari/Chrome,而不是使用链接
重定向浏览器。因此用户在浏览器中始终有一个按钮返回到您的应用程序
您可以使用WebBrowser.openAuthSessionAsync(url)
打开安全会话,该会话与设备中的本机浏览器共享cookie/会话信息
Expo还提供了另一个api,它简化了许多样板文件并提供了一个简单的api。您使用的重定向uri是什么?当您获得404时,webview中的链接是什么?@TarunLalwani重定向uri是app..com/auth,方案是https。web视图中的链接与此相同。请向我提供source编码并分配给我工作。@Codesingh我可以告诉你我期待的问题的细节。我创建了类似这样的东西。它避免了所有RN库的混乱,如react native fbsdk
和react native google signi
。这样,你就可以在服务器端实现一切,并将API令牌传递给你的mo胆汁应用程序与深度链接。