【问题标题】:Cannot Get Token from Uber API with Valid Access Key无法使用有效访问密钥从 Uber API 获取令牌
【发布时间】:2015-08-06 09:45:43
【问题描述】:

过去几天我一直在尝试将我的应用程序与 uber 集成,但由于某种原因,在 oauth2 身份验证期间,我无法让 uber 给我一个有效的令牌。我可以获得访问代码,但是在使用 curl 时,无论我如何安排脚本,我似乎都无法获得访问令牌。这是我所拥有的:

<?php

echo $_GET['code']."<br>";
$token = curl_init();
$param = array(
    'client_secret' => 'MY_SECRET',
    'client_id' => 'MY_ID',
    'grant_type' => 'authorization_code',
    'code' => "{$_GET['code']}"
    );
$postData = '';
foreach($param as $k => $v)
    {
       $postData .= $k . '='.urlencode($v).'&';
    }
$postData = rtrim($postData, '&');
curl_setopt($token, CURLOPT_URL, 'https://login.uber.com/oauth/token');
curl_setopt($token, CURLOPT_HEADER, true);
curl_setopt($token, CURLOPT_RETURNTRANSFER, true);
curl_setopt($token, CURLOPT_POST, true);
curl_setopt($token, CURLOPT_POSTFIELDS, $postData);
$returned_token = curl_exec($token);
curl_close($token);
echo $returned_token;

?>

我已经仔细检查了我的秘密和身份证,两者都是正确的。每次我要获取访问代码时,我都可以看到它是独一无二的,我可以看到它在我重定向到的授权页面上回显,但无论我不断收到以下响应:

{"error": "access_denied"}

【问题讨论】:

  • 没有任何解决方案适合您吗?如果他们有,或者如果他们看起来最好,您应该将其标记为已接受。

标签: php curl oauth-2.0 uber-api


【解决方案1】:

发生此错误的原因是:

重定向网址
这些 URL 将在 OAuth 身份验证期间使用。
如果您的请求中没有包含重定向 URI,则默认 URL 将是 用过。

redirect_uri(可选)
之后我们将重定向回的 URI 资源所有者授权。
URI 的基必须与您的应用程序注册期间使用的 redirect_uri 匹配。

【讨论】:

  • 我包含了 request_uri 但只能看到授权码,看不到返回令牌。
【解决方案2】:

对我来说很好用。确保 Content-Type 标头正确。一些服务会期望这一点。 (例如Content-Type=x-www-form-urlencoded

另外,你能分享一下你是如何请求code的吗? (例如,您在发送授权请求时使用的是哪个scope 等)。

【讨论】:

  • curl_setopt($token, CURLOPT_HTTPHEADER, array("Content-Type=x-www-form-urlencoded")); 喜欢这个?好像没什么区别。
【解决方案3】:

我也遇到过这个问题,好像找到原因了。

尝试将 redirect_uri(与应用设置中的相同)添加到您的请求中,因此您的参数代码应如下所示:

$param = array(
'client_secret' => 'MY_SECRET',
'client_id' => 'MY_ID',
'redirect_uri' => 'MY_REDIRECT_URI',
'grant_type' => 'authorization_code',
'code' => "{$_GET['code']}"
);

这对我有帮助,但我希望 Uber 开发人员能更具体地说明这个错误

【讨论】:

    【解决方案4】:

    它非常适合我。我的问题是仪表板应用程序上的 URL 重定向和我发送给请求的参数之间存在差异。我修好了,一切正常

    【讨论】:

    • 这对排名最高的解决方案有何帮助?这怎么不仅仅是评论,而不是完整的答案?
    猜你喜欢
    • 2016-02-09
    • 1970-01-01
    • 2014-09-12
    • 2016-07-02
    • 1970-01-01
    • 2018-10-10
    • 2015-04-17
    • 1970-01-01
    • 2018-01-08
    相关资源
    最近更新 更多