无法通过uber api授权,我有server_token,client_id和client_secret,如何发送请求?

时间:2016-04-04 20:34:47

标签: php api oauth-2.0 uber-api

为什么我会收到错误请求uri?

https://login.uber.com/oauth/v2/authorize?response_type=code&client_id= “$设定[ '全球'] [ '的clientId'] '&安培; clientSecret =。”'。$设定[ '全球'] [ 'clientSecret']'&安培;范围= all_trips&安培; REDIRECT_URI = HTTP://'.$_SERVER [ 'HTTP_HOST'] .'token.php

2 个答案:

答案 0 :(得分:0)

  • 对于GET /oauth/v2/authorize端点,您发送的 clientSecret 参数不是必需的,可能会干扰其后端的某些参数验证。 您需要传递的参数是:

      

    RESPONSE_TYPE
      CLIENT_ID
      范围
      状态
      redirect_uri

    阅读上述网址,了解每个参数的含义。

  • 确保您在查询参数redirect_uri中发送到GET https://login.uber.com/oauth/v2/authorize端点的URI的基础与您的应用{授权选项卡的Uber Developers Dashboard中定义的URI匹配。

    正如authorize OAuth request的文档所说:

      

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

    重定向网址可以是:

    1. 本地主机
        

      http://::1
        http://127.0.0.1
        http://localhost

    2. 任何HTTPS://网址

        

      的https://

    3. 自定义方案

        

      custom-scheme://

  • 确保您的重定向URI已启用HTTPS

    根据相同的authorization and authentication documentation

    The Uber API implements the OAuth 2.0 standard for secure authentication and authorization.  
    All communication with our servers must be over SSL (https://).
    

    要获得免费获取域名的TLS证书,我建议Let's Encrypt Certificate Authority

答案 1 :(得分:0)

  •   

    1)надоработатьснапримерhttp://localhost/loacation.php()

  •   

    2)获取代码символыизпеременной代码

    require_once'uber.php';     $ settings = require_once'settings.php';     if(!isset($ _GET [“code”])){         setcookie(“AccessToken”,“”,time() - 3600);         标题(“位置:https://login.uber.com/oauth/v2/authorize?response_type=code&client_id=”。$ settings ['global'] ['client_id']。'& redirect_uri = localhost / location.php& client_secret ='。$ settings ['global'] ['client_secret “]);         死();     }

    $result = postKeys("https://login.uber.com/oauth/v2/token",
        array(
            'client_secret'=>$settings['global']['client_secret'],
            'client_id'=>$settings['global']['client_id'],
            'grant_type'=> 'authorization_code',
            'redirect_uri'=> 'http://localhost/location.php',
            'code'=> $_GET["code"],
            ), array('Content-type: application/x-www-form-urlencoded')
    );
    // после получения ответа, проверяем на код 200, и если все хорошо, то у нас есть токен
    if ($result["code"]==200) {
        $result["response"]=json_decode($result["response"],true);
        $token=$result["response"]["access_token"];
        $new = new Token($settings);
        $new->setToken($token);
    }else
        echo "не правильный код: ".$result["code"].' '.$result['response'];