2016-01-19 65 views
2

我正在使用Firebase的authWithCustomToken方法作爲通過auth0的委託身份驗證流程的一部分。具有自定義標記的Firebase身份驗證會給出null用戶ID

Auth0通過其delegate call給我一個智威湯遜,然後我通過authWithCustomToken。 Firebase告訴我auth已成功,並給我一個authData下的值,但此值爲空,因爲它的uid。 AFAIK,我的Firebase安全規則必須使用UID進行限制,所以似乎出現了問題。

這裏的authData響應:

{ auth: { fb_id: 'auth0|555afce3f3066cf36f5ebd58' }, 
expires: 1453234943, 
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2ZyZWVmb3JtZXJzLmF1dGgwLmNvbS8iLCJzdWIiOiJhdXRoMHw1NTVhZmNlM2YzMDY2Y2YzNmY1ZWJkNTgiLCJhdWQiOiJQaEpNNzdmVjhVbnl5Rjc3REFKQzdOM1BPRnNoZTRVYSIsImV4cCI6MTQ1MzIzNDk0MywiaWF0IjoxNDUzMTk4OTQzLCJ2IjowLCJkIjp7ImZiX2lkIjoiYXV0aDB8NTU1YWZjZTNmMzA2NmNmMzZmNWViZDU4In0sImF6cCI6InJnZ3VBc1hkT25mY0NTT1FLcTdpU3F2cDRER1ZMQTVUIn0.87DmiUn0TY0G3kpPyiJoK6d-aTKsBNlfHBHbM4R4WMk', 
uid: null, 
provider: 'custom' } 
+0

當您調用authWithCustomToken時,auth變量恰好包含JWT中的信息。您是否檢查以確保Auth0生成的JWT中存在「uid」屬性?另請注意,Firebase安全規則不要求*存在「uid」,這只是非常常見的。但是舉個例子,這篇關於使用Firebase的auth0的博客文章並沒有使用'uid':https://www.firebase.com/blog/2014-06-05-auth0-guest-blog.html –

+0

只是一個快速澄清問題:您是否自己實施Firebase/Auth0連接?如果是這樣,可能[將Firebase作爲Auth0插件實施](https://auth0.com/docs/server-apis/firebase)可能解決您的問題? 如果沒有,請告訴我,我很樂意仔細查看您的實施情況。 –

+0

@FrankvanPuffelen - 就是這樣!我沒有想到,uid只是一個慣例。爲了理智,儘管我現在已經在智威湯遜擁有auth0軟件包了。 @KassandraPerch - 這就是我所做的,默認情況下,你只在JWT中獲得'fb_id'。 –

回答

2

當你調用authWithCustomToken(),該auth變量包含正是在智威湯遜的信息。如果沒有auth.uid,則可能是因爲Auth0沒有爲令牌添加一個。

請注意,Firebase安全規則不要求要求存在一個uid,它只是非常常見的一個。但是舉個例子,這篇關於使用Firebase的auth0的博客文章並未使用uid:https://www.firebase.com/blog/2014-06-05-auth0-guest-blog.html

相關問題