Oauth FitBit-代表用户进行身份验证
简言之,我们不希望我们的客户在每次登录网站并希望在我们的网站上同步Fitbit数据时都进行身份验证 我们希望他们进行一次身份验证,然后保存令牌并使用该令牌自动同步数据。我似乎无法获得工作授权。我正在使用.Net 这是我的代码,但一直在401-未经授权 : 是否有人有示例代码或可以看到问题所在Oauth FitBit-代表用户进行身份验证,oauth,fitbit,Oauth,Fitbit,简言之,我们不希望我们的客户在每次登录网站并希望在我们的网站上同步Fitbit数据时都进行身份验证 我们希望他们进行一次身份验证,然后保存令牌并使用该令牌自动同步数据。我似乎无法获得工作授权。我正在使用.Net 这是我的代码,但一直在401-未经授权 : 是否有人有示例代码或可以看到问题所在 亲切问候我为我们办公室的内部fitbit联盟写了类似的东西 代码在github上 它使用Azure table storage作为保留代币的支持存储,但您应该能够根据需要对其进行更改,它还支持使用该应用程序
亲切问候我为我们办公室的内部fitbit联盟写了类似的东西 代码在github上 它使用Azure table storage作为保留代币的支持存储,但您应该能够根据需要对其进行更改,它还支持使用该应用程序的用户 [编辑]
我还使用了客户端库非常感谢!!我会看看这个:)这个奏效了,谢谢!似乎如果你使用Fitbit.NETAPI,它会为你做所有的脏活,谢谢!
string consumerKey = "KEY";
string authToken = "TOKEN";
string secrectKey = "SECRET";
string baseUrl = "http://api.fitbit.com/1/user/-/profile.xml";
string auth_nonce = DateTime.Now.Ticks.ToString();
string timestamp = ( ( Int32 )( DateTime.UtcNow.Subtract( new DateTime( 1970, 1, 1 ) ) ).TotalSeconds ).ToString();
string signingKey = string.Empty;
string authSignature = string.Empty;
string parameters = "oauth_consumer_key=" + consumerKey + "&oauth_nonce=" + auth_nonce + "&oauth_signature_method=HMAC-SHA1&oauth_timestamp=" + timestamp + "&oauth_token=" + authToken + "&oauth_version=1.0";
//1. percent encode
parameters = HttpUtility.UrlEncode( parameters );
//encode baseURL
baseUrl = HttpUtility.UrlEncode( baseUrl );
//add POST
//signature base string
parameters = "GET&" + baseUrl + "&" + parameters;
//signing key
signingKey = secrectKey + "&" + authToken;
//generate key
//base64 signature srting
authSignature = Convert.ToBase64String( Generate( signingKey, parameters ) );
//url for request
WebRequest g = HttpWebRequest.Create( "http://api.fitbit.com/1/user/-/profile.xml" );
//add headers
g.Headers.Add( HttpRequestHeader.Authorization, "OAuth realm=\"api.fitbit.com\" oauth_token=\"" + authToken + "\", oauth_consumer_key=\"" + consumerKey + "\", oauth_nonce=\"" + auth_nonce + "\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"" + timestamp + "\", oauth_version=\"1.0\", oauth_signature=\"" + authSignature.Replace( "=", "%3D" ) + "\"" );
//get response from server
var response = g.GetResponse();