Authentication Nativescript Webview回调uri
我们可以在nativescript中从外部url回发到web视图并从回发中获取值吗?它是带有重定向uri的oauth2流,用户在本地webview中显示网站的外部链接,并从回发url获取令牌值。有任何关于图坦卡蒙或博客的建议或指针吗?所有主要参与者都对此提供支持,oauth非常使用它。您应该能够查看Authentication Nativescript Webview回调uri,authentication,oauth-2.0,nativescript,Authentication,Oauth 2.0,Nativescript,我们可以在nativescript中从外部url回发到web视图并从回发中获取值吗?它是带有重定向uri的oauth2流,用户在本地webview中显示网站的外部链接,并从回发url获取令牌值。有任何关于图坦卡蒙或博客的建议或指针吗?所有主要参与者都对此提供支持,oauth非常使用它。您应该能够查看urlProperty的更改。例如 如果您有一个如下所示的视图: <Page loaded="loaded"> <WebView id="myWebView" src="{
urlProperty
的更改。例如
如果您有一个如下所示的视图:
<Page loaded="loaded">
<WebView id="myWebView" src="{{ url }}" />
</Page>
var webViewModule = require('ui/web-view');
function loaded(args) {
var page = args.object;
var webView = page.getViewById('myWebView');
webView.on(webViewModule.WebView.urlProperty, function (changeArgs) {
console.dir(changeArgs);
// Do something with the URL here.
// E.g. extract the token and hide the WebView.
});
}
args.object.ios.stringByEvaluatingJavaScriptFromString('YOUR_JAVASCRIPT_CODE');
这是我的main-page.js,在这里我在args.url下的函数中获得了所有令牌和值
var vmModule = require("./main-view-model");
var webViewModule = require('ui/web-view');
function pageLoaded(args) {
var page = args.object;
page.bindingContext = vmModule.mainViewModel;
var webView = page.getViewById('myWebView');
debugger;
//webView.url =
webView.on(webViewModule.WebView.loadFinishedEvent, function (args) {
alert(JSON.stringify(args.url));
});
webView.src = vmModule.mainViewModel.url;
}
exports.pageLoaded = pageLoaded;
我的观点是
<Page xmlns="http://www.nativescript.org/tns.xsd" loaded="pageLoaded">
<GridLayout>
<WebView id="myWebView" />
</GridLayout>
</Page>
所有的时间都是在文档中写的,我只是没有仔细看。希望它能帮助其他人。我知道这已经过时了。但是下面的代码可以帮助很多人
YOUR_WEB_VIEW_OBJECT.on(webViewModule.WebView.loadFinishedEvent, function (args) {
args.object.android.getSettings().setJavaScriptEnabled(true);
args.object.android.evaluateJavascript('(function() { console.log("LOGS"); return "MESSAGE"; })();', new android.webkit.ValueCallback({
onReceiveValue: function (result) {
console.log(result);
}
}));
});
这段代码目前适用于Android。您也可以通过挖掘他们的API引用,然后将其转换为{N}合适的版本来创建iOS版本。在iOS上,您可以这样做:
<Page loaded="loaded">
<WebView id="myWebView" src="{{ url }}" />
</Page>
var webViewModule = require('ui/web-view');
function loaded(args) {
var page = args.object;
var webView = page.getViewById('myWebView');
webView.on(webViewModule.WebView.urlProperty, function (changeArgs) {
console.dir(changeArgs);
// Do something with the URL here.
// E.g. extract the token and hide the WebView.
});
}
args.object.ios.stringByEvaluatingJavaScriptFromString('YOUR_JAVASCRIPT_CODE');
是否每次url更改时都会触发该手表?webViewModule.WebView.urlProperty始终未定义…根据文档,有urlProperty属性,但在调试过程中它始终未定义..我是否遗漏了什么?我将标记您的答案,因为您为我指出了正确的方向,但仍然发现很难完全访问webview@AtulChaudhary. 介意分享一下你的发现吗?