1

我正在使用本机 Facebook SDK(通过一个名为“SimpleFacebook”的开源工具)向 Facebook 进行身份验证。那部分工作得很好。我发现缺少 Facebook 身份验证的 Microsoft Azure 实现。

无论如何,下一步是使用此 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 站点

4

1 回答 1

1

我想我已经弄清楚了。基本上我所要做的就是创建一个 JSON 对象(这对我来说是相当新的)。我之前尝试过,但我导入了错误的 JSON 类(我导入了 org.json.JsonObject 或其他东西,而不是 com.google.gson.JsonObject)。

一旦我这样做了,我就必须弄清楚正确的 json 属性应该是什么。通过大量谷歌搜索,我发现这是正确的格式:

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

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

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

真的没那么难,但为什么 Azure 团队不把它放在他们的文档中???对于经验丰富的开发人员来说,这可能只是“显而易见的”信息,但我花了整整一个晚上才弄清楚。

于 2014-12-25T06:41:07.127 回答