GithubHelp home page GithubHelp logo

openapi-demo-php's Introduction

ISV应用和企业应用php demo 注意!注意!注意!demo中的数据库存储一定要修改为mysql等持久化存储。 目录结构:

isv目录:isv应用php demo

corp目录:企业应用php demo

运行前先看开发文档:http://ddtalk.github.io/dingTalkDoc/?spm=a3140.7785475.0.0.Q5c5r7

Getting Started

ISV应用注册开发流程 ###创建套件前 登录到 http://console.d.aliyun.com/#/dingding/suite 创建套件(需要先注册开发者账号和钉钉企业才能创建套件) ###创建套件 3.填写套件信息 其中:

  • Token: 可以随意填写,填写完之后,打开工程的isv/config.php文件,把Token的值复制给TOKEN
  • 数据加密密钥:点击自动生成,然后打开工程的isv/config.php文件,把值复制给给ENCODING_AES_KEY
  • 应用ID:把应用ID的值复制给APPID
  • IP白名单: 调用钉钉API的合法IP列表(例如,工程部署在ip地址为123.56.71.118的主机上,那就填写"123.56.71.118")
  • 回调URL: url为工程地址/receive.php(例如,工程将部署在ip地址为123.56.71.118的主机上,端口为8080,那么我的回调URL即为:http://123.56.71.118:8080/receive.php,假如你有域名的话,也可以把IP地址换成域名)

4.配置PHP服务器环境(php+apache/nginx),安装mcrypt扩展(注意,一定要安装mcrypt扩展),保证apache服务根目录与可写权限(存储json数据)

5.将demo工程(isv)部署到服务器上

6.部署成功之后,点击『创建套件』弹窗中的『验证有效性』。

具体是如何验证回调URL有效性的,请查看(isv/receive.php)

7.创建套件成功之后,将得到的SuiteKey和SuiteSecret填写到工程的config.php中。

8.点击['测试企业和文档'],注册测试企业,注册完成后,点击『登录管理』到oa.dingtalk.com完成测试企业的激活

9.测试企业激活完成后,进入套件『管理』,在页面底部选择要授权的测试企业进行授权

10.修改微应用主页地址和PC主页地址

点击应用最右侧的编辑,编辑微应用信息,例如,工程部署在ip地址为123.56.71.118的主机上,端口为8080,那么微应用首页地址即为:http://123.56.71.118:8080/index.php?corpid=$CORPID$,PC版首页地址为:http://123.56.71.118:8080/indexpc.php?corpid=$CORPID$,点击保存。

11.打开钉钉,进入对应企业,即可看到微应用,点击进入

注意:Ticket推送状态成功之后,再授权企业

###创建企业应用 1.进入https://oa.dingtalk.com/#/microApp/microAppList,点击『新建应用』

2.配置PHP服务器环境(php+apache/nginx),安装mcrypt扩展(注意,一定要安装mcrypt扩展),保证apache服务根目录与可写权限(存储json数据)

3.微应用主页地址填写。地址为根目录/index.php,(例如,工程部署在ip地址为123.56.71.118的主机上,端口为8080,那么微应用首页地址即为:http://123.56.71.118:8080/index.php,PC版首页地址为:http://123.56.71.118:8080/indexpc.php,假如你有域名的话,也可以把IP地址换成域名) 修改config.php中的CORPID,SECRET,AGENTID,其中CORPID,SECRET在微应用设置页面https://oa.dingtalk.com/#/microApp/microAppSet获取,AGENTID在创建微应用的时候可以获取

4.微应用创建成功后,需要把微应用首页地址改为'根目录/index.php'

5.打开钉钉,进入对应企业,即可看到微应用,点击进入

###本DEMO具体实现

1.URL回调流程

请查看文档

2.jsapi权限验证配置流程

请查看文档

3.免登流程

请查看文档

openapi-demo-php's People

Contributors

injekt avatar liningwangyi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openapi-demo-php's Issues

创建企业应用demo无法运行

按创建企业应用的五个步骤走了,但为什么应用首页的按钮点击后没反应呢?
config.php中的CORPID,SECRET,AGENTID信息均已添加;
PHP服务器环境中也包含mcrypt扩展版本为2.5.8;
将corp文件夹中所有文件权限均设为777,
是什么原因呢?

EAK长度为43,依然报900004错误

E/ 2016-10-20 09:18:54  Token: amb8945iddjkfgnsl5
E/ 2016-10-20 09:18:54  EAK: mk0f0l2zdlfu3rsgt9srqqv7demt6k4z12rpo5onps9
E/ 2016-10-20 09:18:54  strlen 43
E/ 2016-10-20 09:18:54  SUITEKEY: suite4xxxxxxxxxxxxxxx
E/ 2016-10-20 09:18:54  {"signature":"35716f2f5a9355fc51931711bab19576578f1605","timestamp":"1476955134333","nonce":"26q7WdQn"}  ERR:900004
E/ 2016-10-20 09:18:54  {"signature":"35716f2f5a9355fc51931711bab19576578f1605","timestamp":"1476955134333","nonce":"26q7WdQn"}CREATE SUITE ERR:900004

记录中EAK长度为43,但是每次都报900004错误,是什么原因?

// 这段代码明明是 != 43 才会有900004错误
    if (strlen($this->m_encodingAesKey) != 43) {
            return ErrorCode::$IllegalAesKey;
        }

ISV初次创建的demo code有问题

receive.php 的第十五行,第一次创建的时候应该用 CREATE_SUITE_KEY。

$crypt = new DingtalkCrypt(TOKEN, ENCODING_AES_KEY, SUITE_KEY);

Auth中corp_access_token中怎么会有access_token的set

Auth中corp_access_token中怎么会有access_token的set。。。

    public static function getAccessToken()
    {
        /**
         *                                                                                                                         缓存accessToken。accessToken有效期为两小时,需要在失效前请求新的accessToken(注意:以下代码没有在失效前刷新缓存的accessToken)。
         */
        $accessToken = Cache::get('corp_access_token');
        if ($accessToken == '')
        {
            $response = Http::get('/gettoken', array('corpid' => CORPID, 'corpsecret' => SECRET));
            $accessToken = $response->access_token;
            Cache::set('access_token', $accessToken);
        }
        return $accessToken;
    }

不合法的access_token

SUITE_KEY
SUITE_SECRET
TOKEN
APPID
ENCODING_AES_KEY 都已经填写正确。
提示:
var _config = object(stdClass)#9 (2) {
["errcode"]=>
int(40014)
["errmsg"]=>
string(24) "不合法的access_token"
}

Not in DingTalk pc webview

下载此demo,部署好环境后,进入indexpc.php页面,控制台报:Not in DingTalk PC webview index.js第200行的信息,请问这是什么原因?

权限校验失败Code:52013签名校验失败错误

问题已解决,帮助后来的钉钉开发者解决此类问题!
问题原因:钉钉服务端生成签名使用的参数和您生成的参数不同,主要有可能是url地址和ticket参数不一样
url地址不同的原因之一:开发者在钉钉开发后台配置了https的域名,然而代码生成的url地址确加上了端口号443,导致两个url参数不匹配报错
ticket参数不同的解决办法:进入项目中首先把filecache.php文件删除,然后重新创建,然后赋予chmod 777权限,然后在钉钉开发者后台授权微应用,指导两边的tikcet参数是一样的。

证书问题

证书很蛋疼,demo直接提供个吧,至少开发测试用

Fatal error: Uncaught exception 'Httpful\Exception\ConnectionErrorException' with message 'Unable to connect to "https://oapi.dingtalk.com/gettoken?corpid=&corpsecret=&": 35 error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.