thinkPHP5 对接魔方网表

1、先说这个登录问题

  第一种:


  目前魔方网表里没有提供专门的登录接口,但是有提供了一个临时的token解决方案,据魔方网表的技术说,后面有可能会被正式的oauth验证替换。

  这个临时的token方案,非常简单,就是用curl方式去访问他的相当于是登录地址一样,然后会 返回一串字符 给你,在之后的每个请求里,都带上这个字符串,就ok了。

  

  public static function getMofangCookie()
    {
        $mofangHost = "http://www.****.com";   //魔方地址
        //这个就是获取临时token的地址
        $url = "/magicflu/html/bpm/bpmOpToken.jsp";
        //使用curl方式获取token
        $data = getCurlCookie($mofangHost . $url);
        //然后要拼接上 key 
        $cookie = 'BPMOPTOKEN=' . $data;
        return $cookie;
    }   
  
  public function getCurlCookie($url)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }

  以上是获取到的token,然后在每个请求中都带上这个参数,就算是已登录用户了

  第二种(如果数据比较重要不建议此方式):

  如果不用临时token的解决方案,就要把接口要使用到的表单和空间设置成匿名也能访问才行,而且不仅是接口要使用到的,还有表单所联动的那些表也要设置成匿名,才能拿得到,这样这些表单就要暴露在能访问到这个空间的所有人面前

  说一下如何设置

  首先要把使用到的这个空间的权限设置成   允许匿名访问

  

   然后,权限设置里设置   未登录用户  的权限

     

  这里要设置两个权限:一个是表本身的未登录用户的权限,另一个是需要读取记录的权限

  注意:这里设置好了如果还不行,则有可能是 回写公式   和   过滤器  这两个影响了,可以选择先关掉试试

  

   然后就可以按照 API 去增删改查数据了。

2、增删改查

  

  

   正常每个表单的工具栏那里都会有一个这样的标识。进入后就可以看到请求地址以及请求方式

  

  然后按照接口文档上去编辑自己的逻辑就可以了。

  例(更新操作):

  curlRequest($url, json_encode($data, true), $cookie, 'put');

  附上增删改的 curl 请求方式:

   /**
     * curl 请求
     * @param $url  string  地址
     * @param $data  string  数据字符串
     * @param $cookie  string  cookie
     * @param $method  string  请求方式
     * @return string
     */
    function curlRequest($url, $data='', $cookie = '', $method = 'post')
    {
        $ch = curl_init(); //初始化CURL句柄
        curl_setopt($ch, CURLOPT_URL, $url); //设置请求的URL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设为TRUE把curl_exec()结果转化为字串,而不是直接输出
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); //设置请求方式

        curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-HTTP-Method-Override: $method"));//设置HTTP头信息
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //设置提交的字符串
        curl_setopt($ch, CURLOPT_COOKIE, $cookie);   //携带的cookie
        $document = curl_exec($ch);//执行预定义的CURL
        if (!curl_errno($ch)) {
            $info = curl_getinfo($ch);
            echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
        } else {
            echo 'Curl error: ' . curl_error($ch);
        }
        curl_close($ch);

        return $document;
    }
原文地址:https://www.cnblogs.com/j-jian/p/13323596.html