2016-07-25 456 views
-1

即时通讯使用azure移动服务的Xamarin形式。我正在使用它被开放使用的非安全服务。现在客户端改变了服务端点,现在终端点是安全的,只有授权用户才能访问端点,所以现在使用Google帐户登录。我遵循了以下步骤: -request.Headers [“Authorization”] =“Bearer”+ accessToken;

  1. 使用Google帐户登录并收到访问令牌。
  2. 在获取请求标头中传递访问令牌。

request.Headers["Authorization"] = "Bearer " + accessToken;

响应: -

The remote server returned an error: (401) Unauthorized.

如果任何人有任何想法,请与我分享。

+0

我正在使用Google令牌向移动服务端点发送请求,我是否应该将Google令牌发送给Azure以进行身份​​验证? –

回答

0

我不知道是否能解决你的问题,但在我的情况下,下面的代码工作(与承载令牌,HttpClient和Xamarin.Forms)

// Set the authorization Header in httpclient 
DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "your-access-token"); 

侧面说明:我有一个自己的实施API通信(仅从HttpClient继承)

1

您无法直接使用Google令牌进行身份验证。您将Google令牌换成ZUMO令牌,然后将ZUMO-AUTH头添加ZUMO令牌的值。

我们通常假设您使用的是其中一个客户端SDK。但是,由于您直接执行此操作,因此您需要自行构建请求。端点是/ login/google,POST主体应该是内容为{"access_token","your-google-token"}的应用程序/ json。

两条建议:1)使用客户端SDK(您可以使用委托处理程序覆盖HttpClient,并且很多这些东西都由您负责)。 2)升级到Azure移动应用程序(Azure移动服务今年正在关闭,所有客户都正在转换到Azure移动应用程序)。

+0

你说得对,请求将与x-zumo-auth标题一起工作,因为昨晚我已经尝试了同样的事情。如: - request.Headers [“x-zumo-auth”] = accessToken; –