簡體   English   中英

在Azure MobileServiceClient.login()中使用oAuth令牌

[英]Use oAuth token with Azure MobileServiceClient.login()

我正在使用本地Facebook SDK(通過名為“ SimpleFacebook”的開源工具)向Facebook進行身份驗證。 那部分效果很好。 我發現缺少Microsoft Azure的Facebook身份驗證實現。

無論如何,下一步是使用來自此Facebook會話的令牌並通過MS / Azure進行身份驗證。 有兩種方法看起來像他們應該做的

public void login(java.lang.String provider,
     java.lang.String oAuthToken,
     UserAuthenticationCallback callback)

使用提供者特定的oAuth令牌調用Windows Azure移動服務身份驗證

Parameters:
provider - The provider used for the authentication process
oAuthToken - The oAuth token used for authentication
callback - Callback to invoke when the authentication process finishes

還有另一個非常相似的方法,其中第二個參數是類型的JSON對象:

com.google.gson.JsonObject oAuthToken,

是我還是這里缺少文檔? 我嘗試僅調用Facebook會話的.getAccessToken()並將其傳遞給函數,然后從Azure收到錯誤消息:

Caused by: com.microsoft.windowsazure.mobileservices.MobileServiceException: {"code":400,"error":"Error: invalid json"}
at com.microsoft.windowsazure.mobileservices.MobileServiceConnection$1.onNext(MobileServiceConnection.java:115)

我們如何知道正確的JSON格式是什么? 使用正確的令牌嗎?

可以在以下位置找到更多信息: 在此Azure網站上

我想我已經弄清楚了。 本質上,我要做的就是創建一個JSON對象(對我來說這是很新的)。 我較早嘗試過,但是我導入了錯誤的JSON類(我導入了org.json.JsonObject或其他內容,而不是com.google.gson.JsonObject)。

一旦這樣做,我就必須弄清楚正確的json屬性應該是什么。 通過很多Google搜索,我發現這是正確的格式:

JsonObject jo = new JsonObject();
jo.addProperty("access_token", token);

然后在調用中使用jo.toString(),例如:

mClient.login(MobileServiceAuthenticationProvider.Facebook, jo.toString(), new UserAuthenticationCallback() {
.....
    }

確實沒有那么困難,但是Azure團隊為什么不將其放在他們的文檔中??? 對於一個經驗豐富的開發人員來說,也許這只是“顯而易見的”信息,但是我花了整整一個晚上才弄清楚。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM