【问题标题】:JSON POST request - Pocket API / OAuth2.0JSON POST 请求 - Pocket API / OAuth2.0
【发布时间】:2014-05-17 06:05:32
【问题描述】:

我正在尝试构建一个使用 PHP 和 JQuery 与 Pocket 交互的应用程序

按照这里的步骤http://getpocket.com/developer/docs/authentication 我卡在“第 2 步:获取请求令牌”

文档告诉我:

POST /v3/oauth/request HTTP/1.1
Host: getpocket.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Accept: application/x-www-form-urlencoded

consumer_key=1234-abcd1234abcd1234abcd1234&
redirect_uri=pocketapp1234:authorizationFinished

这对我来说毫无意义。如何格式化此 OAuth JSON POST 请求以使用 PHP 和/或 JQuery?

注意,我尝试使用https://github.com/jshawl/pocket-oauth-php,但它在回调中失败,并且似乎在文档明确声明 POST 时使用了 GET。我也想自己解决这个问题,以便了解如何将 OAuth 用于其他 API。

谢谢。

【问题讨论】:

    标签: php jquery json oauth pocket


    【解决方案1】:

    这似乎工作正常:

    <?php
    session_start();
    $redirect_uri = 'http://path/to/app/callback';
    $url = 'https://getpocket.com/v3/oauth/request';
    $data = array('consumer_key' => '*****', 'redirect_uri' => $redirect_uri);
    
    // use key 'http' even if you send the request to https://...
    $options = array(
        'http' => array(
            'header'  => "Content-type: application/x-www-form-urlencoded; charset=UTF-8",
            'method'  => 'POST',
            'content' => http_build_query($data),
        ),
    );
    $context  = stream_context_create($options);
    $result = file_get_contents($url, false, $context);
    
    $request_token = str_replace('code=','',$result);
    
    $_SESSION['request_token'] = $request_token;
    
    header("Location: https://getpocket.com/auth/authorize?request_token=$request_token&redirect_uri=$redirect_uri");
    die();
    
    ?>
    

    之后我在会话中使用 request_token 以类似的方式获取我的访问令牌。

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 1970-01-01
      • 2014-06-24
      • 2017-05-23
      • 1970-01-01
      • 2019-04-18
      • 2014-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多