oschina openapi php 调用

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

  1. 生成oschina授权链接
  2. 用户访问该链接之后得到 code
  3. 利用code换取access_token

代码:

<?php

/**
 * @author xialei <[email protected]>
 */
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‘,
    ‘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 <[email protected]>
 */
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的时候报错了。

时间: 2024-11-08 06:06:46

oschina openapi php 调用的相关文章

微信硬件H5面板开发(一) ---- 调用openApi

微信硬件平台是微信推出连接物与人,物与物的IOT解决方案.也就是说可以通过微信控制各种智能设备.比如一些蓝牙设备.空调.电视等等. 我本身不懂硬件(虽然是电子信息专业),硬件是北航的两个研究生在弄,小团队里我负责开发H5自定义面板,刚开始看官方文档各种迷糊,对于jssdk.jsapi.Airkiss.openApi.直连SDK都不知道该用哪个做,官方论坛问问题基本上没结果,加了几个微信硬件群问问题,发现好些开发者和我一样,同一个问题,发到几个群里问,画面好心酸.给wxthings发邮件问,能回复

pyqt 学习基础 实践2 基于oschina笔记软件的初步界面

笔记软件主界面 这东西大概介绍 我想做一个基于oschina的跨平台的笔记软件(做得好就分享给大家,做的不好就自己收藏-.,oschina openapi方面已经熟悉了一下,但是Qt还不是很熟悉,因为还是学习中-),下面讲我在用其他的笔记软件常常遇到以下几个问题: 不跨平台,因为很多像我这种伪程序猿都会在window和linux或者mac之间切换,像onenote就只能在windows上运行, 还有印象笔记的linux客户端也不甚理想.不过近期发现的为知笔记的确是个不错的选择 作为一个笔记软件,

轻松把玩HttpClient之封装HttpClient工具类(四),单线程调用及多线程批量调用测试

本文主要来分享一下该工具类的测试结果.工具类的整体源码不再单独分享,源码基本上都已经在文章中了.开始我们的测试. 单线程调用测试: public static void testOne() throws HttpProcessException{ System.out.println("--------简单方式调用(默认post)--------"); String url = "http://tool.oschina.net/"; //简单调用 String re

Java中调用Delphi编写的DLL

有些时候,要写一些程序,在 JAVA 里面好难实现, 但如果使用其它编程语言却又比较容易时,我们不妨通过 JNI 来让不同语言的程序共同完成. JNI 的教程, 网上 C 的比较多,Java 也提供了 javah.exe 为 C 语言的 JNI 程序生成头文件, 如果你是一个 Delphi 编程员, 能否让 JAVA 与 Delphi 程序交互呢? 答案是肯定的,今天我们就来看一下一个简单的例子. Helloworld. 主要是来认识一下, JAVA 怎样调用 Delphi 程序的方法. 好的,

webmagic的是一个无须配置、便于二次开发的爬虫框架

webmagic的是一个无须配置.便于二次开发的爬虫框架,它提供简单灵活的API,只需少量代码即可实现一个爬虫. 以下是爬取oschina博客的一段代码: ? 1 2 Spider.create(new SimplePageProcessor("http://my.oschina.net/", "http://my.oschina.net/*/blog/*")).thread(5).run(); webmagic采用完全模块化的设计,功能覆盖整个爬虫的生命周期(链接

微信硬件平台

调用openApi 微信硬件平台是微信推出连接物与人,物与物的IOT解决方案.也就是说可以通过微信控制各种智能设备.比如一些蓝牙设备.空调.电视等等. 我本身不懂硬件(虽然是电子信息专业),硬件是北航的两个研究生在弄,小团队里我负责开发H5自定义面板,刚开始看官方文档各种迷糊,对于jssdk.jsapi.Airkiss.openApi.直连SDK都不知道该用哪个做,官方论坛问问题基本上没结果,加了几个微信硬件群问问题,发现好些开发者和我一样,同一个问题,发到几个群里问,画面好心酸.给wxthin

微信硬件H5面板开发(二) ---- 实现一个灯的控制

在第一节中讲解了openApi的调用,这一篇讲一下如何实现一个灯的控制.就用微信提供的lamp例子来做,将代码扒下来(实在是没办法,没有示例),整合到自己的项目中.lamp源码:http://files.cnblogs.com/files/stoneniqiu/lamp.zip. 你可以自己扒,带参数的页面在浏览器中打开会马上跳转,不带参数的会提示参数不全,需要用mobile模式观看. 呈现的界面如下: 目录结构 解压开lamp.js ,目录如下,这个demo是基于sea.js+zepto实现,

轻松把玩HttpClient之封装HttpClient工具类(二),插件式配置HttpClient对象

上一篇文章中,简单分享一下封装HttpClient工具类的思路及部分代码,本文将分享如何实现插件式配置HttpClient对象. 如果你看过我前面的几篇关于HttpClient的文章或者官网示例,应该都知道HttpClient对象在创建时,都可以设置各种参数,但是却没有简单的进行封装,比如对我来说比较重要的3个:代理.ssl(包含绕过证书验证和自定义证书验证).超时.还需要自己写.所以这里我就简单封装了一下,顺便还封装了一个连接池的配置. 其实说是插件式配置,那是高大上的说法,说白了,就是采用了

试了下阿里云的OPEN Api

逐渐理解open api的意义,试了下阿里云的续费接口,续费一个月 package com.test; /** * @author * @date 2018/12/05 */ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.aliyuncs.AcsRequest; import com.aliyuncs.AcsResponse; impor