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; }