如何使用浏览器获取授权并返回到本机iOS客户端?

时间:2018-12-06 20:27:16

标签: ios cordova authentication ionic-framework

我有一个内置于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:oobhttps://login.microsoftonline.com/tfp/oauth2/nativeclient

谢谢

0 个答案:

没有答案