陈欧体DOTA冰女版

你只听到超神的流言,却没看到通宵的苦练;你有你的出装,我有我的加点;你否定我的经验,我决定我的表演;你嘲笑我带鸡带眼只配做个陪练,我可怜你不懂大局只知道打钱;你可以无视我的贡献,我会证明我的默默无言。辅助,是注定需要付出的旅行,路上少不了嘲笑和白眼,但,那又怎样?哪怕收尸入殓,也要在地图上留下我的惊艳。我是CM,我为队友带眼。

陈欧体PHP版

你只看到前端的华丽,却想不到后端的复杂;你有你的想法,我有我的语法;你否定我的正统,我决定我的受众;你嘲笑我章法混乱不配作为一门语言,我可怜你总是比来比去一事无成;你可以蔑视我的草根,我会证明谁是开源的宠儿。梦想,是注定孤独的旅行,路上少不了质疑和嘲笑,但,那又怎样?哪怕千夫所指,也要流淌出我code的模样。我是PHP,我为自己代言。

自动同步wordpress文章到有道云笔记的的插件制作(一)

一直想玩一下各大开放平台来着,虽然老早就申请了各大平台的开发者账号,但是从来没有开过刀。一直都忙的跟狗一样,再加上自己难以克服的惰性,所以…

今天是春节前在公司的最后一天,上午和@麦克是你的河马在公司dota来着,玩到high处,我开始高调起来,全然不顾走过来的部门总监,大喊大叫,于是可想而知的悲剧了……然后就安静的看起有道openAPI的文档还有sdk,想把之前的一个想法实现下。一直以来都是有道笔记的忠实用户,这款笔记软件也一直没让我失望,表现一直不错(还记的当时较低版本的时候提了个小建议,升级的时候那个功能竟然加了进去,不知道是不是采纳了我的建议,嘿嘿)。不用evernote就是因为免费版的左下角有个小块的广告,虽然谈不上难看,但是我的洁癖是不能容忍的。也许你会说,现在有道笔记的左下角也有个android客户端的推广广告。是的,正是因为这个小广告,我才开始有了做这个插件的想法,不想直视它,但是又不愿意放弃它(在这里给有道笔记提个小建议,如果用户从这个推广链接点到有道的应用下载界面,然后点了安装过这个软件,就不要再去显示了嘛,不然像我这种人,怎么看怎么不舒服,至于实现,是very easy的哦~)。我的这个想法是把平时的笔记文章写到博客上然后自动同步到有道笔记去,好处嘛自己去体会喽。

第一次玩开放平台,也是第一次接触oauth认证,流程很容易懂,开发者先去开放平台申请,然后等个几天之后,平台会给你key或许还有个secret,通过这些信息,你可以去按照api规定的一些方法组装一些参数去获取一组token,通过这个token,跳到登陆授权页面,让用户选择是否授权,然后用户授权之后,重定向到callbackUrl(如果有callbackUrl的话),同时有一个verifier,然后通过这个verifier和之前得到的token,再去请求一个accessToken,成功的话,给你返回一个accessToken和accessSecret。ok到了这里,你就可以通过这个accessToken和accessSecret来操作用户的有道笔记了[注],增删改查神马的,一切由你的代码说了算喽(当然这是在用户给你的代码授权的前提下),遇到的一个问题就是,我第一次成功走了这遍流程的时候,那我第二次是不是要再去要用户授权再去操作呢?我想那会把用户逼疯的,所以我觉得只要一次授权,就可以了。回头看我标记了[注]的那句话。是的,就是这个accessToken和accessSecret,只要用户第一次授权之后,你把这玩意保存下来,怎么存随你了,那么就可以用这玩意去做你想做的事情了(增删改查对应accessToken用户的笔记)。这个问题把我搞了有好一会,还是在一个腾讯微博开放平台开发者论坛里面找到的答案,要是看文档的时候能心细点看到我标[注]相关的那段,也就不用纠结这个了。当然,文档上是这样写的“通常Access Token 具有一定的有效期,在有效期内应用程序可以一直访问该用户的数据,而当Access Token 过期后,应用程序则需要再次走一遍授权流程。”。所以过期之后,又得走一遍授权,这点上希望有道让用户自己来决定是否撤销授权。也就是让用户自己操作删除第三方应用保存的accessToken。

今天就是小改了下有道托管在google code的sdk,自己实在太懒,懒得去组装api中规定的请求参数,就直接用sdk中封装好的方法,实现了下代码对笔记的操作,还没真正写成wordpress的插件,所以本文是(一),其实还没写过wordpress的插件,囧rz..,什么时候才能完工,还真心说不定。下面就是改的sdk里面sample的代码,代码丑陋,斗胆放出。文章表达观点若有不当,还请斧正。

<?php
include 'ynote_client.php';
header("Content-type: text/html; charset=utf-8");
$do = $_GET['do'] ? $_GET['do'] : 'api_test';

// please fill the following fields to run the demo
$oauth_consumer_key = "**********************";
$oauth_consumer_secret = "***********************";
$this_page = "http://localhost/test/php_sdk/ynote_client_example.php"; // this is the URL for the demo to get back to this page.

if(!($_GET['oauth_token'] && $_GET['oauth_verifier']))
{
	if ($do == 'api_test') {
	/******************************************** DEMO *************************************************/
		$client = new YnoteClient($oauth_consumer_key, $oauth_consumer_secret, 'http://sandbox.note.youdao.com');

		$response = $client->getRequestToken();
	    $request_token = $response['oauth_token'];
		$request_secret = $response['oauth_token_secret'];
		echo '<br />';

		$call_back = $this_page.'?request_token='.$request_token.'&request_secret='.$request_secret;
		$content = $client->getAuthorizeUrl($call_back);
		echo '<script type="text/javascript">location.href="'.$content.'"</script>';

	}
}
else 
{
	$post['verifier'] = $_GET['oauth_verifier'];
	$post['oauth_request_token'] = $_GET['request_token'];
	$post['oauth_request_secret'] = $_GET['request_secret'];

	$client = new YnoteClient($oauth_consumer_key, $oauth_consumer_secret);

	//这里要把token保存好,下次就不用授权了
    $oauth_access_token = '***************';
    $oauth_access_secret = '************************';

    echo 'access token:'.$oauth_access_token;
    echo '<br />';
    echo 'access secret:'.$oauth_access_secret;
    echo '<br />';

    $user_info_response = $client->getUserInfo($oauth_access_token, $oauth_access_secret);
    echo '<pre>';
    print_r(json_decode($user_info_response));
    echo '</pre>';

    echo '<br />';
    $list_notebook_response = $client->listNotebooks($oauth_access_token, $oauth_access_secret);
    $list_notebook = json_decode($list_notebook_response);
    echo '<pre>';
    print_r($list_notebook);
    echo '</pre>';

    echo '<br />';
    $list_notes_response = $client->listNotes($oauth_access_token, $oauth_access_secret, $list_notebook[0]->path);
    $list_note = json_decode($list_notes_response);
    echo '<pre>';
    print_r($list_note);
    echo '</pre>';

    echo '<br />';
    $get_note_response = $client->getNote($oauth_access_token, $oauth_access_secret, $list_note[0]);
	echo '<pre>';
    print_r(json_decode($get_note_response));
	echo '</pre>';
}

用开放平台的接口做事情还是有一定的局限性的,现在肚子里对微博神马的还有不少想法想去实现,如果开放的这些接口不能满足我的需求的话,会借@朱光星云共享给我的某个神器去做,哈哈。

顺便吐个槽,昨晚睡前掐指一算,无形地诞生了很多痛苦,不算上年终奖和1月份的工资(因为还没发,日),我12年整年攒下的钱一共才1k+,是的没错,才1000多块!真不晓得钱去哪里了,我了个大操!今年光棍节的时候一共花了六七百块给自己买了两件外套和两双鞋,没有买裤子,现在穿身上的牛仔裤也穿了快三年了,袋口和裤脚都破破烂烂了,真他妈苦逼。