東川印記

一本東川,笑看爭龍斗虎;寰茫兦者,度橫佰昧人生。

网易博客导入blogspot之05调用

2017年5月23日星期二



sina跟google的鉴权都可以了,然后测下调用,再然后封几个接口,再再然后考虑下网易博客应该怎么往里导,是采用解析RSS方式40条 40条的导,还是去抓网页。。。。

这周过完了

百病缠身的一周2016年08月19日19:31:50

但愿下周会一天天好起来吧。。。。


2016年08月24日18:26:06
原来取了第一个code,还不够,还要用code去取token.....

token那里有过期时间什么的

然后按文档去请求,一直就是400.。。。

拿模拟
发现报21323.。。。官方文档没这个错误
  1. {"error":"invalid_request","error_code":21323,"request":"/oauth2/access_token","error_uri":"/oauth2/access_token","error_description":"miss client id or secret"}
看参数没错啊,头也加了也不行


幸好度娘那里的先烈们解决了。。。。

原来真的很奇葩。。。。

在get挂参数,用post方式请求就行了。。。。。


get的地址,post的提交
  1. https://api.weibo.com/oauth2/access_token?client_id=3558006695&client_secret=b25e12d05308cc11de5234ca5f91e9eb&grant_type=authorization_code&code=a6190d920f83b1aaf9a0368fdd0979d7&redirect_uri=https://api.weibo.com/oauth2/default.html
真特么神奇啊。。。。

OAUTH2.0

请求用户授权-->用户输密码-->连服务器--->返回code---->带code跟其他参数请求服务器 ---->获取token存储

取数据:

发送请求夹带token---->连接服务器---->正常返回

2016年08月24日19:19:25

前天晚上去朝阳医院拿的药,吃了两天,现在感觉还可以。。。。

2016年08月24日20:30:25
V1转V2时的接口open.weibo.com/wiki/V1_to_v2
曾经,是有按小时,按天,按周,按月,的热门微博榜接口的
后来,用的人多了,新浪就不提供了

现在,他们把这功能留着自己用。。。。

2016年08月26日20:25:22
blogger的api,发现无法提交评论comment
找api,在comments里没有insert或者add或者post之类
在post博文里,有replies项,但是增加不成功

其他的还好

google developers playground很好用
developers.google.com/oauthplayground/
可以在右边设置上填自己的密钥,然后每个接口都可以先在这里跑通了,再根据他的原理去编写
事半功倍

有问题也可以在这里发送请求,调

很好用

最恶心的就是新浪,本来是有热搜榜的接口的,结果后来取消了。。。。。

真恶心

对于blogger的post,内容要做一个简单的净化
  1. private String cleanNet(String str){
  2.         return str.replace("http://", "头").replace("t.cn", "短").replace("/", "斜").replace(":", "冒").replace("\'", "单").replace("\"", "引").replaceAll("\\d+", "数").replaceAll("(\r\n|\r|\n|\n\r)", "<br/>");
  3.     }
不然google的json格式检测不过去,会说parse error.

断断续续的做。。。。

好歹是有些实质性的进展了

OAUTH2.0
新浪的授权是1天,google的授权是1小时。。。。

每天都要登可是很麻烦的。。。。

刷新令牌出场

。。。。
频率超限
  1. 08-26 12:39:18.686: W/TEST(10151): {
  2. 08-26 12:39:18.686: W/TEST(10151):  "error": {
  3. 08-26 12:39:18.686: W/TEST(10151):   "errors": [
  4. 08-26 12:39:18.686: W/TEST(10151):    {
  5. 08-26 12:39:18.686: W/TEST(10151):     "domain": "usageLimits",
  6. 08-26 12:39:18.686: W/TEST(10151):     "reason": "rateLimitExceeded",
  7. 08-26 12:39:18.686: W/TEST(10151):     "message": "Rate Limit Exceeded"
  8. 08-26 12:39:18.686: W/TEST(10151):    }
  9. 08-26 12:39:18.686: W/TEST(10151):   ],
  10. 08-26 12:39:18.686: W/TEST(10151):   "code": 403,
  11. 08-26 12:39:18.686: W/TEST(10151):   "message": "Rate Limit Exceeded"
  12. 08-26 12:39:18.686: W/TEST(10151):  }
  13. 08-26 12:39:18.686: W/TEST(10151): }
扔那跑一会就出这个。。。。

看来用了近5年的http工具类该重新写了。。。。
跟不上时代了啊。。。。

2016年08月29日15:45:01
google的blog post报
  1. 08-29 07:19:17.759: W/TEST(28127): {
  2. 08-29 07:19:17.759: W/TEST(28127):  "error": {
  3. 08-29 07:19:17.759: W/TEST(28127):   "errors": [
  4. 08-29 07:19:17.759: W/TEST(28127):    {
  5. 08-29 07:19:17.759: W/TEST(28127):     "domain": "usageLimits",
  6. 08-29 07:19:17.759: W/TEST(28127):     "reason": "rateLimitExceeded",
  7. 08-29 07:19:17.759: W/TEST(28127):     "message": "Rate Limit Exceeded"
  8. 08-29 07:19:17.759: W/TEST(28127):    }
  9. 08-29 07:19:17.759: W/TEST(28127):   ],
  10. 08-29 07:19:17.759: W/TEST(28127):   "code": 403,
  11. 08-29 07:19:17.759: W/TEST(28127):   "message": "Rate Limit Exceeded"
  12. 08-29 07:19:17.759: W/TEST(28127):  }
  13. 08-29 07:19:17.759: W/TEST(28127): }
好像是24小时内一个接口只能调50次,或者多少次,超出就报这个。
需要等24小时再请求才行。。。。。

2016年08月29日19:37:00
做刷新令牌,发现android取的没有refresh_token.
但是同样的密钥跟客户端id,playground取得就有refresh_token,
找了半天文档,原来
带refresh_token的是离线模式;不带的是online模式。
请求时加上参数是access_type=offline
developers.google.com/identity/protocols/OAuth2WebServer#offline
文档看的费劲,随便一个问题都要找好久啊

发现只加一个offline还不够,还是没有刷新
然后找好久
终于出来了!!!
  1. 08-29 12:21:53.872: W/TEST(17983): {
  2. 08-29 12:21:53.872: W/TEST(17983):  "access_token": "ya29.Ci9OA4xnYmqPlXhbRTkIK8salgMNGDdEtUdt2sXXgAlehhLO5uG-k6_1ZE_Mqt83vQ",
  3. 08-29 12:21:53.872: W/TEST(17983):  "token_type": "Bearer",
  4. 08-29 12:21:53.872: W/TEST(17983):  "expires_in": 3600,
  5. 08-29 12:21:53.872: W/TEST(17983):  "refresh_token": "1/An-rMaa7TUmvlwnW2KFFOh42y0mFCpKGQIbp2_CAAuU",
  6. 08-29 12:21:53.872: W/TEST(17983):  "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjQ4ZGZjNzdmYmY1NDU3MmM3ZjZiNGIyZTg3ZjQ2MzA4YWYyYzg4ODgifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhdF9oYXNoIjoiRXlLTjJLRlQtYjVWUjdzZnNBQjZMZyIsImF1ZCI6Ijk2NjQwNDc1ODQ4MC1hNG9sN3A3aTV1MnNuOG5iYTZmdmlja2dob3E2MDdhNC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjEwMDc0MzAyMTQyOTQzMjY1NTc3NCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJhenAiOiI5NjY0MDQ3NTg0ODAtYTRvbDdwN2k1dTJzbjhuYmE2ZnZpY2tnaG9xNjA3YTQuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJlbWFpbCI6ImRjanphYkBnbWFpbC5jb20iLCJpYXQiOjE0NzI0NzM1NjYsImV4cCI6MTQ3MjQ3NzE2NiwibmFtZSI6InNlblJzbCBaaGFvIiwicGljdHVyZSI6Imh0dHBzOi8vbGg2Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tb1VraHZVaGdnX0UvQUFBQUFBQUFBQUkvQUFBQUFBQUFBQUEvZFBZMFdPejE1TUUvczk2LWMvcGhvdG8uanBnIiwiZ2l2ZW5fbmFtZSI6InNlblJzbCIsImZhbWlseV9uYW1lIjoiWmhhbyIsImxvY2FsZSI6InpoLUNOIn0.LkliGWThF7N3QtLSNPVP40_7LCV8Wyoq1YWPj0aAQw7tWaM2c-wlpTYZjtk9meMPYKgciS3jV8Cwr-J8nFgJMmenzJ6_y83MnzFnqvsLBTfK7FuxsCBkf7pm1tk8VphF5DY3qPhSDNc9g_xr3jye02jJLJGeXHmfbvKNtHSgJLK64Ex5d2H__CTp-ePNPD5 XZzMO_2fH0G7-QLu-V5-bibF3l7aXR5talF0Y9BqhI-6YMlPInQFV4e-ENuwKYk4bVduJ-24G6b9WPGGuIf5sJLVHfW9s0B9fP1CHN2EgaymN5VC7HdmXJc_NWfb5CzVCckAf8HkYKRkj929aLDrT0g"
  7. 08-29 12:21:53.872: W/TEST(17983): }
看起来是多个参数协作的结果。。。。
  1.                 map.put(SelfContext.OAUTH_CLIENT_ID, SelfContext.OAUTH_GGL_CLIENT_ID_VALUE);
  2.                 map.put(SelfContext.OAUTH_REDIRECT, SelfContext.OAUTH_GGL_REDIRECT);
  3.                 map.put(SelfContext.OAUTH_RESPONSE_TYPE, SelfContext.OAUTH_GGL_RESPONSE_TYPE_VALUE);
  4.                 map.put(SelfContext.OAUTH_SCOPE, SelfContext.OAUTH_GGL_SCOPE_VALUE);
  5.                 map.put(SelfContext.OAUTH_ACCESS_TYPE, SelfContext.OAUTH_ACCESS_TYPE_OFFLINE);//离线访问
  6. //                map.put("state","security_token%3D138r5719ru3e1%26url%3Dhttps://oa2cb.example.com /myHome");//返回这一串安全验证码
  7.                 map.put("prompt","consent");//提示
  8.                 map.put("include_granted_scopes","true");//包括授予范围
出来就好。。。。

然后尝试下白天写的google refresh token,也通了

这样还差weibo 的授权刷新。
但是看了看api没这个功能。。。。。。
但是却返回了refresh token......

不过幸好SSO鉴权搞定了,可能是高级的API吧。。。。

google 翻译 api.....
竟然收费!!!

2016年08月30日12:34:14
早上上班,发现google客服回了邮件给我,然后adsense审核通过了!!!
之前拒绝的原因就是申请的时候我填的地址是公司地址,地址已经被人用过了。。。。
然后客服给我弄通过之后我登进去就可以把地址改成家的地址了。。。。

哈哈

2016年08月30日13:31:34
google的鉴权刷新,发现正常刷新,但是使用刷新后的token没法用
  1. 08-30 05:25:50.731: W/DefaultRequestDirector(28313): Authentication error: Unable to respond to any of these challenges: {bearer=WWW-Authenticate: Bearer realm="https://accounts.google.com/", error=invalid_token}
  2. 08-30 05:25:50.731: W/TEST(28313): Error Response: HTTP/1.1 401 Unauthorized{
  3. 08-30 05:25:50.731: W/TEST(28313):  "error": {
  4. 08-30 05:25:50.731: W/TEST(28313):   "errors": [
  5. 08-30 05:25:50.731: W/TEST(28313):    {
  6. 08-30 05:25:50.731: W/TEST(28313):     "domain": "global",
  7. 08-30 05:25:50.731: W/TEST(28313):     "reason": "authError",
  8. 08-30 05:25:50.731: W/TEST(28313):     "message": "Invalid Credentials",
  9. 08-30 05:25:50.731: W/TEST(28313):     "locationType": "header",
  10. 08-30 05:25:50.731: W/TEST(28313):     "location": "Authorization"
  11. 08-30 05:25:50.731: W/TEST(28313):    }
  12. 08-30 05:25:50.731: W/TEST(28313):   ],
  13. 08-30 05:25:50.731: W/TEST(28313):   "code": 401,
  14. 08-30 05:25:50.731: W/TEST(28313):   "message": "Invalid Credentials"
  15. 08-30 05:25:50.731: W/TEST(28313):  }
  16. 08-30 05:25:50.731: W/TEST(28313): }
  17. 08-30 05:25:50.731: W/TEST(28313): 401

。。。。原来是刷新后没更新存储

翻译API
google收费,尝试抓网页,貌似google对网页抓取做了限制。。。。

然后google了一下,搜到了有道的。。。。
虽然对于有道的翻译水平持保持态度
但人家可以免费啊
一小时免费1000次调用,足够了!!!
fanyi.youdao.com/openapi?path=data-mode
不上架我自己拿着玩一小时1000次足够用了。。。。

这文档可真简单啊。。。。

数 据接口

http://fanyi.youdao.com/openapi.do?keyfrom=PostHot&key=1273419629&type=data&doctype=<doctype>&version=1.1&q= 要翻译的文本

版本:1.1,请求方式:get,编码方式:utf-8

主要功能:中英互译,同时获得有道翻译结果和有道词典结果(可能没有)

参数说明:

 type - 返回结果的类型,固定为data

 doctype - 返回结果的数据格式,xml或json或jsonp

 version - 版本,当前最新版本为1.1

 q - 要翻译的文本,必须是UTF-8编码,字符长度不能超过200个字符,需要进行urlencode编码

 only - 可选参数,dict表示只获取词典数据,translate表示只获取翻译数据,默认为都获取

 注: 词典结果只支持中英互译,翻译结果支持英日韩法俄西到中文的翻译以及中文到英语的翻译

errorCode:

 0 - 正常

 20 - 要翻译的文本过长

 30 - 无法进行有效的翻译

 40 - 不支持的语言类型

 50 - 无效的key

 60 - 无词典结果,仅在获取词典结果生效


一次不能超过200个字符
编码UTF8编码,200字符/3=不到70,你逗呢。。。。。

试了下好像是200个字
  1. http://fanyi.youdao.com/openapi.do?keyfrom=PostHot&key=1273419629&type=data&doctype=json&version=1.1&q= 有道翻译API提供收费服务,收费服务按翻译字符数计费,一个汉字、一个字母、一个标点都计为一个字符;现在接入,每日免费10 万字符流量,超过部分每百万字符50元人民币;例如,一天累积翻译60万字符,则需要收费25元人民币;如果您的需求量非常大, 请通过官方邮箱与我们联系。
上面一串是130个字左右,可以翻译。。。。

可以用一下



这个好像已经运行好久了。。。。

PostHot....

2017年05月23日10:34:27

网易博客还是那个博客,也没导。。。。
倒是出了一个testbysenrsl的东西。。。。


--
senRsl
2016年08月19日19:29:49

没有评论 :

发表评论