我正在使用测量生命体征设备。制造商是 iHealth。它们与安装了应用程序的智能手机连接,当您使用您的帐户登录时,它会将测量结果发送到他们的服务器。我必须连接到该服务器并从许多帐户中提取数据,但目前我只提取我的就很满足了。为此,iHealth 提供了一个类似沙盒的示例,您可以在以下网址下载该示例:http: //sandbox.ihealthlabs.com/contentfiles/files/SandboxAPISample.zip。
在此示例中,所有需要的变量(client_id、client_secret、redirect_url 等)都在 ConnectToiHealthlabs.cs 类中设置。
当您启动项目时,页面 GetStarted.aspx 被加载并且只出现一个按钮。通过单击按钮,从 ConnectToiHealthlabs.cs 类中调用以下方法:
public void GetCode()
{
string url = url_authorization
+ "?client_id=" + client_id
+ "&response_type=" + response_type_code
+ "&redirect_uri=" + redirect_uri
+ "&APIName=" + APIName_BP + " " + APIName_Weight;
HttpContext.Current.Response.Redirect(url);
}
它重定向的网址是
http://sandboxapi.ihealthlabs.com/api/OAuthv2/userauthorization.ashx?client_id=e4dce2f7027044e0a6ce82ef44d27e23&response_type=code&redirect_uri=http://localhost:9201/TestPage.aspx&APIName=OpenApiBP OpenApiWeight
所以你会到达页面
http://sandboxapi.ihealthlabs.com/api/OAuthv2/oauthlogin.aspx?redirect_uri=%2fapi%2fOAuthv2%2fuserauthorization.ashx%3fclient_id%3de4dce2f7027044e0a6ce82ef44d27e23%26response_type%3dcode%26redirect_uri%3dhttp%3a%2f%2flocalhost%3a9201%2fTestPage.aspx%26APIName%3dOpenApiBP%2520OpenApiWeight
现在您可以使用沙盒凭据进行身份验证:
用户名:sandboxuser@ihealthlabs.com
密码:111111
如果凭据正确,您将被重定向到调用此方法的 TestPage.aspx:
public bool GetAccessToken(string code, string client_para, HttpContext httpContext)
{
string url = url_authorization
+ "?client_id=" + client_id
+ "&client_secret=" + client_secret
+ "&client_para=" + client_para
+ "&code=" + code
+ "&grant_type=" + grant_type_authorization_code
+ "&redirect_uri=" + redirect_uri;
string ResultString = this.HttpGet(url);
if (ResultString.StartsWith("{\"Error\":"))
{
this.Error = JsonDeserializ<ApiErrorEntity>(ResultString);
return false;
}
else
{
AccessTokenEntity accessToken = this.JsonDeserializ<AccessTokenEntity>(ResultString);
httpContext.Session["token"] = accessToken;
return true;
}
}
结果网址是
http://sandboxapi.ihealthlabs.com/api/OAuthv2/userauthorization.ashx?client_id=e4dce2f7027044e0a6ce82ef44d27e23&client_secret=bb6a0326db55468f8f474ad5fd79aa0a&client_para=123&code=a1yBBCZu80DXlhnSmyYEKIY6cQ73cVj7O9i1hv7rH68EQIgIlY0*pODnNbD2gyEMu6UnHvksB5Ndf42-I8i4xPHb4jTqzpue0S9PVLTCjw2bUMOZCyiBoCBjcllUzHzo&grant_type=authorization_code&redirect_uri=http://localhost:9201/TestPage.aspx
因此,如果一切正确,您可以看到一个下载 BP 数据的按钮(网址:)
http://sandboxapi.ihealthlabs.com/api/OpenApi/downloadbpdata.ashx?access_token=a1yBBCZu80DXlhnSmyYEKIY6cQ73cVj7O9i1hv7rH6-zMHK6iEu9OCg4MCErg-lOvm0WKcGwfZfVWanKB3-s2BLUZniYfwn99tsdWTRhlvBU8ZFTcIk-9qPeMtN*zVTNosPp4RsCiHF2D-o-DvpdwjS9qQhcwMEKgunaLSK1Qu8&client_id=e4dce2f7027044e0a6ce82ef44d27e23&client_secret=bb6a0326db55468f8f474ad5fd79aa0a&redirect_uri=http://localhost:9201/TestPage.aspx&sc=082a65ac25db4262b795f635c974de47&sv=bd82a25dcf18446b90f3219ef7d0b441
,
下载体重数据(网址
http://sandboxapi.ihealthlabs.com/api/OpenApi/downloadweightdata.ashx?access_token=a1yBBCZu80DXlhnSmyYEKIY6cQ73cVj7O9i1hv7rH6-zMHK6iEu9OCg4MCErg-lOvm0WKcGwfZfVWanKB3-s2BKc5tIrfqZpz5gC*IAhOnIr1J1PhT0M0*IPDtIZ6SLuTZtNC5Hn0C4u0yDBo9zunmoDwkoz2wKmAqE4aXUJFE4&client_id=e4dce2f7027044e0a6ce82ef44d27e23&client_secret=bb6a0326db55468f8f474ad5fd79aa0a&redirect_uri=http://localhost:9201/TestPage.aspx&sc=082a65ac25db4262b795f635c974de47&sv=add22354420244ba9e0f3a5a6b402096
:)
并刷新令牌(网址:)
http://sandboxapi.ihealthlabs.com/api/OAuthv2/userauthorization.ashx?client_id=e4dce2f7027044e0a6ce82ef44d27e23&client_secret=bb6a0326db55468f8f474ad5fd79aa0a&client_para=&refresh_token=a1yBBCZu80DXlhnSmyYEKIY6cQ73cVj7O9i1hv7rH6-zMHK6iEu9OCg4MCErg-lOvm0WKcGwfZfVWanKB3-s2Pl0dL9j3ijv6zPwlqNtRkO2lRuNbVszrIeKHqx2ZToJCLvFHNHmMJWni*QMiIgWRl-B3VIHGdpGFPpD5iD0p9Y&response_type=refresh_token&redirect_uri=http://localhost:9201/TestPage.aspx
。
在此示例中,它将转发器与返回 DownloadBPData 和 DownloadWeightData 方法的列表绑定,以显示页面中的值。
我的目标是在没有打开弹出窗口并且没有手动身份验证来安排更新速度的情况下到达这两个列表。
全部在类似页面的日志中:
2013 年 7 月 24 日 12:00 - 找到用户 ABC 的新数据
24/07/2013 11:30 - 找到用户 XYZ 的新数据
24/07/2013 11:00 - 等等...
但我真的不知道从哪里开始。
我拥有的唯一文档是以下文件:http: //developer.ihealthlabs.com/contentfiles/files/Open%20API%20Protocol.zip
沙盒项目中的 url 与我必须连接的服务器不同,我发现了很多 OAuth2 库,但所有示例都是针对 Facebook、Twitter 等的。
谢谢你。