Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 将oAuth令牌与Azure MobileServiceClient.login()一起使用_Json_Azure_Oauth_Azure Mobile Services_Facebook Java Sdk - Fatal编程技术网

Json 将oAuth令牌与Azure MobileServiceClient.login()一起使用

Json 将oAuth令牌与Azure MobileServiceClient.login()一起使用,json,azure,oauth,azure-mobile-services,facebook-java-sdk,Json,Azure,Oauth,Azure Mobile Services,Facebook Java Sdk,我正在使用本机Facebook SDK(通过一个名为“SimpleFacebook”的开源工具)通过Facebook进行身份验证。那部分工作得很好。我发现缺少Facebook身份验证的Microsoft Azure实现 无论如何,下一步是使用此Facebook会话中的令牌,并通过MS/Azure进行身份验证。有两种方法,看起来他们应该这样做 public void login(java.lang.String provider, java.lang.String oAuthToken,

我正在使用本机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格式是什么? 我用的是正确的代币吗

有关更多信息,请访问:
我想我已经弄明白了。基本上我所要做的就是创建一个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团队不把这个放在他们的文档中呢???
对于一个经验丰富的开发人员来说,这可能只是“显而易见”的信息,但我花了整整一个晚上才弄明白。

在“如何:验证用户/客户端流”下的文档中很快提到了这一点: