Oauth FitBit-代表用户进行身份验证

Oauth FitBit-代表用户进行身份验证,oauth,fitbit,Oauth,Fitbit,简言之,我们不希望我们的客户在每次登录网站并希望在我们的网站上同步Fitbit数据时都进行身份验证 我们希望他们进行一次身份验证,然后保存令牌并使用该令牌自动同步数据。我似乎无法获得工作授权。我正在使用.Net 这是我的代码,但一直在401-未经授权 : 是否有人有示例代码或可以看到问题所在 亲切问候我为我们办公室的内部fitbit联盟写了类似的东西 代码在github上 它使用Azure table storage作为保留代币的支持存储,但您应该能够根据需要对其进行更改,它还支持使用该应用程序

简言之,我们不希望我们的客户在每次登录网站并希望在我们的网站上同步Fitbit数据时都进行身份验证

我们希望他们进行一次身份验证,然后保存令牌并使用该令牌自动同步数据。我似乎无法获得工作授权。我正在使用.Net

这是我的代码,但一直在401-未经授权

:

是否有人有示例代码或可以看到问题所在


亲切问候

我为我们办公室的内部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();