oschina openapi php 调用

应用时基于yii的。目前流程如下:

  1. 生成oschina授权链接

  2. 用户访问该链接之后得到 code

  3. 利用code换取access_token

代码:

<?php

/**
 * @author xialei <xialeistudio@gmail.com>
 */
class OschinaOauth extends CComponent
{
 public $ak;
 public $sk;
 public $callback;
 private $host = 'https://www.oschina.net';

 public function init()
 {
 }

 /**
  * 获取授权链接
  * @return string
  */
 public function getRedirectUrl()
 {
  $params = array(
    'response_type' => 'code',
    'client_id' => $this->ak,
    'redirect_uri' => Yii::app()->createAbsoluteUrl($this->callback)
  );
  return $this->host . '/action/oauth2/authorize?' . http_build_query($params);
 }

 /**
  * 获取AccessToken
  * @param $code
  * @return string
  * @throws CException
  * @throws Exception
  */
 public function getAccessToken($code)
 {
  $params = array(
  'client_id' => $this->ak,
  'client_secret' => $this->sk,
  'grant_type' => 'authorization_code',
  'redirect_uri' => Yii::app()->createAbsoluteUrl($this->callback),
  'code' => $code,
  'dataType' => 'json',
  );
  $url = $this->host . '/action/openapi/token';
  $resp = Request::post($url, $params);
  $data = json_decode($resp,true);
  return $data;
 }

 public function refreshAccessToken()
 {
 }
}
<?php

/**
 * @author xialei <xialeistudio@gmail.com>
 */
class OauthController extends Controller
{
 public function actionCallback($code, $state)
 {
  $data = Yii::app()->oauth->getAccessToken($code);
  print_r($data);
 }

 public function actionRedirect()
 {
  $url = Yii::app()->oauth->getRedirectUrl();
  $this->redirect($url);
 }
}

目前的问题是可以得到 code,但是利用code去oschina获取access_token的时候报错了。

转载于:https://my.oschina.net/xialeistudio/blog/373263

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值