所以我构建了一个webapp并在Ionic中制作相应的移动应用程序。我想制作一个渐进的网络应用程序,因为它会让我的生活更轻松,但我想Apple还不支持这个。
(p.s。我对这个东西很新)
所以我使用id.me api来验证军事服务,后者在重定向uri中发回一个访问令牌以发出api请求。
我可以通过两种方式,通过我的服务器或客户端。
这是他们的网络流程 https://developer.id.me/documentation#oauth-overview
这就是我失去离子的地方......
因此,为了启动webflow,我必须将用户发送到id.me的授权端点,我将在inappbrowser中执行此操作
https://api.id.me/oauth/authorize?client_id=CLIENT-ID&redirect_uri=REDIRECT-URI&response_type=token&scope=SCOPE
id.me在重定向上发回访问令牌...
从那里,我可以抓取令牌,将其保存到本地存储并关闭inAppBrowser。我不知道的是在哪里设置uri?是localhost吗?在平台上构建Ionic时,是否在本地服务器上运行?
我会这样做吗?
angular.module('myApp', ['ionic', 'ngCordova']).controller('AppCtrl',
function($rootScope, $ionicPlatform, $cordovaInAppBrowser) {
var callback = 'http://localhost:8100/callback';
$scope.idAuth = function() {
$ionicPlatform.ready(function() {
var options = {
location: 'yes',
clearcache: 'no',
toolbar: 'yes'
};
$cordovaInAppBrowser.open('https://api.id.me/oauth/authorize?client_id=CLIENT-ID&redirect_uri=callback&response_type=token&scope=SCOPE', '_blank', options)
});
};
$rootScope.$on('$cordovaInAppBrowser:loadstart', function(e, event) {
//and this function is called, so you do something like
if(event.url === callback){;
let token = event.url.match(/\#(?:access_token)\=([\S\s]*?)\&/)[1];
$window.localStorage.setItem('token', token);
$cordovaInAppBrowser.close();
}
});
现在,如果该回调uri被击中,它将运行该功能?
此外,这就是我迷失的地方。我知道这对于本地开发是如何工作的,但是当你构建并将它放在一个设备上时,那个回调uri是否仍然存在? Ionic是否在设备本身的本地服务器上运行?
答案 0 :(得分:3)
Ionic正在聆听http://localhost/[YourCallBackURI]。默认情况下,它在设备上的端口80上运行,除非您更改了配置。在模拟器模式下运行时,将使用其他端口。