2017-07-11 79 views
2

這裏的任何人都實現了通過Google for Auth0進行社交登錄?在與Google驗證後,我會遇到令牌(訪問和ID)問題。Google社交用Auth0令牌爲[Authorized] API調用

這裏是我的代碼:

var waGoogle = new auth0.WebAuth({ 
    domain: 'testApplication.auth0.com', 
    clientID: '************', 
    redirectUri: 'http://localhost:8080/' 
}) 

waGoogle.authorize({ 
    connection: 'google-oauth2', 
    responseType: 'id_token token' 
    }, function(err, authResult){ 
    if(err){ 
     console.log('Google Login Error') 
     console.log(err) 
    } 
}); 

谷歌畫面出現,我登錄,我重定向回我的應用程序。從應用程序中,我解析URL以便我可以獲取訪問和標識令牌。我有

let getParameterByName = (name) => { 
    var match = RegExp('[#&]' + name + '=([^&]*)').exec(window.location.hash); 
    return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); 
} 

var access_token = getParameterByName('access_token') 
var id_token = getParameterByName('id_token') 

的問題是,沒有令牌允許我這樣稱呼我的API(asp.net網頁API)都裝修與[授權]屬性。它返回一個:

401(未授權)

我知道我的API是否正常工作,如使用正常

用戶名,密碼,驗證

方法在那裏我也獲得訪問令牌,我的API調用只是通過。

從Google獲取訪問權限和id_token後,我需要執行哪些後續步驟?我是否需要額外撥打Auth0才能獲取正確的訪問令牌以便能夠調用我的Web API?

謝謝。

+0

您是否按照[此處](https://auth0.com/docs/goog-clientid)的說明配置了Google自己的社交連接? –

+0

是的,我做到了。我能夠獲得令牌(訪問和ID),但是我面臨的問題是這些令牌未被授權用於我用[授權]爲asp.net web api所裝飾的API。 – aThink

+0

訪問令牌是否獲得JWT令牌(包含三個部分的長字符串,由點分隔)。如果是這樣,你可以在https://jwt.io中調試它,看看它與使用數據庫連接時發出的不同。 –

回答

1

您正在查找的令牌稱爲IdP(身份提供者)令牌。這與登錄後發給你的那個不同。在Auth0站點上有非常好的指導,可以引導你完成獲取該令牌的過程。

Here is the overview of IdP tokens

Here is a step-by-step guide to calling the Identity Provider

的TL;博士:

要訪問的IdP令牌,你需要從你的服務器調用Auth0管理API。爲此,您的服務器將需要一個管理令牌。然後使用該令牌訪問端點/api/v2/users/[USER_ID]。在從Auth0發回的對象中,查找Google身份並提取該令牌。

另請注意,如果可以的話,您應該在服務器上保留該令牌。如果您可以將這些權力令牌遠離您的客戶,您的用戶將會很高興。