2016-05-21 61 views
2

因此,我構建了一個webapp並在Ionic中製作相應的移動應用程序。我想製作一款先進的網絡應用程序,因爲它會讓我的生活更輕鬆,但我想蘋果公司目前還不支持。在Ionic中處理重定向Uri以用於外部API

(附註:我非常新的這個東西)

所以我使用的是id.me API來驗證服兵役,發回一個訪問令牌的重定向URI,以使API請求。

有兩種方法可以通過我的服務器或通過客戶端執行此操作。

這裏是他們的Webflow 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?它是本地主機嗎?當您在平臺上構建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是否仍然存在? Ionic是否在設備本身的本地服務器上運行?

回答

3

Ionic正在收聽http://localhost/[YourCallBackURI]。默認情況下,它在設備的端口80上運行,除非您另行更改配置。在模擬器模式下運行時使用其他端口。

+0

謝謝你的男人,我沒有看到任何地方。那麼我會放下這個端口! –

+0

@AnonyUrbina記住標記爲已回答。 –

+0

對不起,我是一個n00b當談到重定向 - 我想類似的東西,但我無法讓我的回調HTML頁面觸發。我使用的是「silent-callback.html」頁面的Auth0。我的html在「src/pages/silent-callback/silent-callback.html」中,並且已經在我的app.module.ts中聲明瞭它。我應該如何格式化重定向? – mpsyp