Authentication Nativescript Webview回调uri

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="{

我们可以在nativescript中从外部url回发到web视图并从回发中获取值吗?它是带有重定向uri的oauth2流,用户在本地webview中显示网站的外部链接,并从回发url获取令牌值。有任何关于图坦卡蒙或博客的建议或指针吗?所有主要参与者都对此提供支持,oauth非常使用它。

您应该能够查看
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. 介意分享一下你的发现吗?