如何在没有用户登录的情况下从Yammer获取访问令牌?

时间:2018-02-09 13:06:13

标签: php laravel yammer

以下是Yammer文档: https://developer.yammer.com/

当我尝试通过浏览器发出请求时,我已成功获得访问令牌 https://www.yammer.com/oauth2/authorize?client_id=[:client_id]&response_type=code&redirect_uri=[:redirect_uri]

但是我必须以编程方式执行此操作。因此,虽然我的API向Yammer的任何端点发出请求,但如果访问令牌过期,则应生成新的访问令牌。但我遇到了以下屏幕截图: here is screenshot

我想到了我的请求标题。我添加了一些标题(用户代理)

    public function getCode(Request $request)
{
    $code = $request->get('code');

    $client = new \GuzzleHttp\Client();

    if (!is_null($code)) {
        $res = $client->request(
          'GET',
          'https://www.yammer.com/oauth2/access_token.json?client_id='.$this->clientId.'&client_secret='.$this->clientSecret.'&code='.$code
        );
        echo $res->getBody();
    }else {
        $res = $client->request(
          'GET',
          'https://www.yammer.com/oauth2/authorize?client_id='.$this->clientId.'&response_type=code&redirect_uri='.$this->redirectUri,
          [
              'headers' => [
                  'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'
              ]
          ]
        );

        echo $res->getBody();
    }
}

P.S:重定向uri与我的示例代码的操作相同。

1 个答案:

答案 0 :(得分:0)

发出请求后,请尝试使用以下代码而不是echo $ res-> getBody();

$response =json_decode($res->getBody(), true);
return $response;