React Native WebView,如何存储用户名和密码
React Native WebView, how to store username and password
我正在为 android 和 iphone/ipad 创建一个仅使用 webview 的非常简单的应用程序。
我如何存储用户名和密码,这样用户就不必每次都输入它们。提前致谢。
import React, { Component } from 'react';
import {
AppRegistry,
WebView
} from 'react-native';
export default class myapp extends Component {
render() {
return (
<WebView
source={{uri: 'https://mysecretappurl.com'}}
/>
);
}
}
AppRegistry.registerComponent('myapp', () => myapp);
感谢 Fabian 的快速回复。
我用 injectedJavascript 解决了这个问题,即使我在 android 和 ios 上关闭并重新启动应用程序,数据仍然存在。我一开始尝试使用 asyncstorage 和 reactnativ-webview-bridge 时遇到了困难,但由于缺乏知识,我未能实现它们。
import React, { Component } from 'react';
import {
AppRegistry,
WebView
} from 'react-native';
export default class myapp extends Component {
render() {
let jsCode = `
var cookie={};
document.cookie.split('; ').forEach(function(i){cookie[i.split('=')[0]]=i.split('=')[1]});
document.querySelector('#email').value=cookie['email'] || '';
document.querySelector('#password').value=cookie['password'] || '';
document.querySelector('#login button').onclick = function(){
document.cookie = 'email='+document.querySelector('#email').value;
document.cookie = 'password='+document.querySelector('#password').value;
};
`;
return (
<WebView
source={{uri: 'https://mysecretappurl.com'}}
injectedJavaScript={jsCode}
/>
);
}
}
AppRegistry.registerComponent('myapp', () => myapp);
不知道我理解的对不对:
你正在写一个 "minified browser" 和 react native 只是为了显示你的网页并且你想在该页面上预填写登录表单?
如果这是真的,那么您正在寻找一种可能性,即从您的 React Native 应用程序与您在 WebView 组件中的页面交换数据。看看 this tutorial of react-native-webview-bridge .
我会尝试以下方法:
- 与您的网页通信并为您的登录表单建立一个侦听器,以将凭据传递给您的 RN 应用程序
- 使用 react-native-simple-store 之类的模块将凭据存储在您的 RN 应用程序中
- 如果您下次启动该应用程序,请检查您的存储空间,如果凭据不为空,请通过桥将它们发送到您的网页/injected javascript
我正在为 android 和 iphone/ipad 创建一个仅使用 webview 的非常简单的应用程序。 我如何存储用户名和密码,这样用户就不必每次都输入它们。提前致谢。
import React, { Component } from 'react';
import {
AppRegistry,
WebView
} from 'react-native';
export default class myapp extends Component {
render() {
return (
<WebView
source={{uri: 'https://mysecretappurl.com'}}
/>
);
}
}
AppRegistry.registerComponent('myapp', () => myapp);
感谢 Fabian 的快速回复。 我用 injectedJavascript 解决了这个问题,即使我在 android 和 ios 上关闭并重新启动应用程序,数据仍然存在。我一开始尝试使用 asyncstorage 和 reactnativ-webview-bridge 时遇到了困难,但由于缺乏知识,我未能实现它们。
import React, { Component } from 'react';
import {
AppRegistry,
WebView
} from 'react-native';
export default class myapp extends Component {
render() {
let jsCode = `
var cookie={};
document.cookie.split('; ').forEach(function(i){cookie[i.split('=')[0]]=i.split('=')[1]});
document.querySelector('#email').value=cookie['email'] || '';
document.querySelector('#password').value=cookie['password'] || '';
document.querySelector('#login button').onclick = function(){
document.cookie = 'email='+document.querySelector('#email').value;
document.cookie = 'password='+document.querySelector('#password').value;
};
`;
return (
<WebView
source={{uri: 'https://mysecretappurl.com'}}
injectedJavaScript={jsCode}
/>
);
}
}
AppRegistry.registerComponent('myapp', () => myapp);
不知道我理解的对不对: 你正在写一个 "minified browser" 和 react native 只是为了显示你的网页并且你想在该页面上预填写登录表单?
如果这是真的,那么您正在寻找一种可能性,即从您的 React Native 应用程序与您在 WebView 组件中的页面交换数据。看看 this tutorial of react-native-webview-bridge .
我会尝试以下方法:
- 与您的网页通信并为您的登录表单建立一个侦听器,以将凭据传递给您的 RN 应用程序
- 使用 react-native-simple-store 之类的模块将凭据存储在您的 RN 应用程序中
- 如果您下次启动该应用程序,请检查您的存储空间,如果凭据不为空,请通过桥将它们发送到您的网页/injected javascript