我试图为我的网站设置Bitbucket OAuth,但由于某种原因,Bitbucket没有正确重定向回我的网站。我创建了一个OAuth密钥和秘密,并且在我的Silex应用程序中使用了Guzzle OAuth插件。Bitbucket API OAuth没有正确重定向
首先我通过oauth/request_token端点请求临时令牌。使用该令牌我重定向到OAuth /验证端点:
$app->get(
'/auth/bitbucket',
function() use ($app) {
$client = new Client('https://bitbucket.org/api/1.0');
$oauth = new OauthPlugin(
array(
'consumer_key' => $app['bitbucket.key'],
'consumer_secret' => $app['bitbucket.secret'],
'signature_method' => 'HMAC-SHA1',
'callback' => urlencode('http://mysite.local/auth/bitbucket/callback')
)
);
$client->addSubscriber($oauth);
$response = $client->post('oauth/request_token')->send();
parse_str($response->getBody(), $result);
return $app->redirect(sprintf('https://bitbucket.org/api/1.0/oauth/authenticate?oauth_token=%s', $result['oauth_token']));
}
);
这将弹出页面上的到位桶网站,用户可以授予或拒绝访问他们的帐户。当我点击“允许访问”到位桶应重定向回先前指定的回调URL,而是将我的回调URL追加到位桶网址是这样的:
这显然导致到位桶404页。有没有人有一个想法,为什么重定向到我的回调网址不能正常工作?
这是其中一个“我敢肯定我尝试过,并没有工作”的。回调中的urlencode是个问题。我以前没有尝试过urlencode,但当时显然还有其他问题。很奇怪,bitbucket API文档中的示例url是编码的。仅供参考,OauthPlugin实际上添加了我没有设置的必需参数。 – kielabokkie
编辑我的答案。请检查。 – dario111cro