我有一个内置于Ionic的移动应用程序,并且正在使用Azure B2C对客户端进行身份验证。它要求我导航出去以使用登录,然后作为响应检索令牌。问题似乎在于如何在解析令牌时返回我的应用。
我正在使用window.open或InAppBrowser,例如:
ref = window.open(url, '_self', 'location=no, toolbar=yes');
响应位置网址:
localhost:8080/#access_token=<my_access_token>&token_type=Bearer&expires_in=3600&id_token=<my_id_token>
在Xcode iPhone模拟器中,Safari报告:Safari无法打开页面,因为它无法连接到服务器。
假设我有这个逻辑:
var standalone = window.navigator.standalone,
userAgent = window.navigator.userAgent.toLowerCase(),
safari = /safari/.test( userAgent ),
ios = /iphone|ipod|ipad/.test( userAgent );
if( ios ) {
if ( !standalone && safari ) {
//browser
} else if ( standalone && !safari ) {
//standalone
} else if ( !standalone && !safari ) {
//uiwebview
};
} else {
//not iOS
};
我认为我需要在浏览器情况下使用window.open吗?如果是独立/本地,我会使用InAppBrowser吗?
我正在寻找一个很好的示例,说明如何管理将令牌从浏览器返回到Web或本机ios和android应用。
我开始认为深层链接可能是我需要返回本机应用程序的方式。
FWIW:我在Azure端的配置提供了本机选项,其重定向URI为urn:ietf:wg:oauth:2.0:oob
或https://login.microsoftonline.com/tfp/oauth2/nativeclient
谢谢