2013-08-19 27 views
2

我遵循指南here提供的指导,以便通过OAuth协议永久访问Withings帐户。一切完美,直到第二阶段的最后部分:Withings API未重定向到我的回调URL(PHP/OAuth)

授权此令牌:
......然后,用户可以通过点击 “允许”按钮,他将被重定向到您设置的回调URL 在此步骤的开始。 ...

但是,当用户点击允许时,我没有重定向到我的回调URL。相反,我使用oauth_token和oauth_verifier指向了“Access授权”Withings页面。

请帮忙?

他们表现出以下的例子:

> https://oauth.withings.com/account/authorize? 

> oauth_callback=http%3A%2F%2Fexample.com%2Fget_access_token 
> &oauth_consumer_key=c331c571585e7c518c78656f41582e96fc1c2b926cf77648223dd76424b52b 
> &oauth_nonce=369f9ceb2f285ac637c9a7e9e98019bd 
> &oauth_signature=OR9J9iEl%2F2yGOXP2wk5c2%2BWtYvU%3D 
> &oauth_signature_method=HMAC-SHA1 
> &oauth_timestamp=1311778988 
> &oauth_token=5bb105d2292ff43ec9c0f633fee9033045ed4643e9871b80ce586dc1bf945 
> &oauth_version=1.0 

虽然我的电话是这样的:

> https://oauth.withings.com/account/authorize? 

> oauth_callback=http%3A%2F%2Fmysite.com 
> &oauth_consumer_key=myConsumerKey 
> &oauth_nonce=1234 
> &oauth_signature=6mQ5iICsxxJyunjrGlZLMFNbUQA%3D 
> &oauth_signature_method=HMAC-SHA1 
> &oauth_timestamp=1376934855 
> &oauth_token=myOauthToken 
> &oauth_version=1.0 

这是我的PHP代码:

$callback_uri = rawurlencode("http://www.mysite.com"); 
$authorization_uri = 
"https://oauth.withings.com/account/authorize?" . 
'oauth_callback=' . $callback_uri . 
'&oauth_consumer_key=' . $oauth_params['oauth_consumer_key'] . 
'&oauth_nonce=' . $oauth_params['oauth_nonce'] . 
'&oauth_signature=' . rawurlencode($oauth_signature) . 
'&oauth_signature_method=' . $oauth_params['oauth_signature_method'] . 
'&oauth_timestamp=' . $oauth_params['oauth_timestamp'] . 
'&' . $token . 
'&oauth_version=' . $oauth_params['oauth_version']; 

header("Location: " . $authorization_uri); 

回答

2

哇...好。我终于得到了这个。花了我一段时间才弄明白。

显然,回调网址必须在请求令牌步骤(步骤1)而不是授权步骤(步骤2)中提供。所以上面的所有内容仍然是正确的。

+1

这帮了我。他们的示例代码不起作用。我不得不将“callback_url”更改为“oauth_callback”。除了授权步骤外,我还必须在请求令牌步骤中传递它。相当令人沮丧的是从供应商处得到破碎的示例代码。 –

+0

你介意在你的回答中突出显示正确的用法..或者你是否编辑了原始问题以具有正确的设置? – Erik