使用R从API接收承载令牌

时间:2015-07-01 15:33:02

标签: r swagger rcurl httr

我正在寻找一种解决方案,使用用户名和密码从API接收承载令牌。

现在我正在通过Chrome阅读令牌并提取我的数据,这当然不太理想。

我尝试使用httr和curl来通过R获取并接收Bearer令牌,但我认为我很失落。

我认为应该很简单,从登录信息我收集登录的掩码为 {"username":"name","password":"pw"},这不应该只使用POST命令和正确的标题吗?

POST(url="api_login",config=add_headers(c("username: name"
                                        ,"password: pw")))

根本不起作用。我可以提供php的示例,如下所示:

 <?php

        // Include Request and Response classes

        $url = 'url';

        $params = array(
                'username'  => 'sample_username',
                'password'  => 'sample_password'
            );

        // Create a new Request object
        $request = new Request($url, 'POST', $params);

        // Send the request
        $request->send();

        // Get the Response object
        $response = $request->getResponse();

        if($response->getStatusCode() == 200) {

            print_r($response->getBodyDecoded());
        }
        else {

            echo $response->getStatusCode() . PHP_EOL;
            echo $response->getReasonPhrase() . PHP_EOL;
            echo $response->getBody() . PHP_EOL;
        }
    ?>

由于我对php不是很熟悉,因此我会非常高兴能为您提供正确方向的帮助或指导。我搜索了几个小时 通过R进行API访问,但一切看起来都非常特殊于登录。

我发现这个API使用了弃用的Swagger版本,如果这是有用的信息。

1 个答案:

答案 0 :(得分:1)

这就是我正在做的事情,登录网站并从我的浏览器中读取令牌。我想从R里面登录,对不起,如果我不清楚的话。

我现在将代码更新为:

opts=curlOptions(verbose=TRUE, 
                 ssl.verifypeer = T)
postForm(url,
         "username:" = uname, "password:"=pswd,
         httpheader = c('Content-Type' = 'application/json', Accept = 'application/json'),
         .opts=opts,
         style='POST'
)

导致错误: SSL证书问题:证书链中的自签名证书。

我尝试了许多与cainfo&#39; cainfo&#39;在论证中,但不能使它发挥作用。