来自: 谷奥——探寻谷歌的奥秘 – FeedzShare
发布时间:2010年07月21日, 已有 5 人推荐
感谢 @LucienLu 的投递和自爆。
非常奇怪人人网明知地理信息的重要价值,仍然没有从浏览器获取用户 geo 信息。geo 很有趣,于是自己先实现了用 GAE 将 Google Latitude 同步到 renren。
感谢这位同学用 GAE 同步 twitter 到人人网状态的方法,很有用,让我没发几条垃圾状态。
需求:
- 手机安装 Google 地图并且开通谷歌纵横
- 申请一个 GAE 账户并安装 python 和 GAE 开发包,可以看 Google 官方的文档。然后创建一个 GAE 应用,我的是 latitude2renren
- 注册你的 GAE 应用,点击 Manage Your Domains 链接,注册的目的是获得 consumer key 和 consumer secret。
在GAE开发包安装目录下新建一个文件夹,比如我的
X:Program FilesGooglegoogle_appenginelatitude2renren
创建以下文件:
app.yaml
application: 你的app应用名字
version: 1
runtime: python
api_version: 1handlers:
– url: /OAuth/.*
script: OAuth/OAuthHandle.py
secure: optional
login: admin
cron.yaml
cron:
– description: sync
url: /OAuth/FetchContent
schedule: every 5 minutes
oauth.py Python 的 OAuth 库。这个文件直接从 OAuth 的官方代码弄的。
建立文件夹 OAuth,加入文件 OAuthHandle.py (下载)。
打开这个文件,对前面的 setting area 进行修改,修改 OAuthConsumerKey,OAuthConsumerSecret,renren_usr,renren_passwd。然后搜索 latitude2renren,替换成你的appid。其他不需要改。
还有一些其他特性可以在这里实现:
- 默认每5分钟检查一次位置,可以修改 cron.yaml
- 精度可以调节为最佳或者城市,OAuthHandle.py 修改 line 42 和 line 334,把 best 改成 city,但修改成 city 后同步的地标信息有误,建议自行修改 line 199 的正则规则
- 默认在人人网两次发状态的间隔大于8000000 millisecond,也就是两个多小时,修改 line368
经纬度变化之和大于0.05度(回忆一下中学知识,纬度每变化1度大约是110公里)是更新的必要条件,修改line 367
然后在X:Program FilesGooglegoogle_appengine目录下运行
appcfy.py update ./你的文件夹
上传GAE。
最后一步是通过 OAuth 授权你的应用获得你的 Latitude 信息,访问 https://你的appid.appspot.com/OAuth/GetRequestToken,按提示操作即可。
同步的效果是在条件满足时(默认为上次同步发生在8000秒前,经纬度变化之和超过0.05),五分钟之内更新一条人人网状态:I’m at 中国xxxxxx. http://maps.google.com/maps?ll=经度,纬度&z=12&t=m (Auto Sync from Google)
我这里代码很省,比如 JSON 解析用的是正则;由于 Google Maps API Web Services 即将于本月推出,坐标转中文地标用的是 http://maps.google.com/maps?output=js&hl=zh-CN&oe=UTF-8&q=纬度+经度 这样的Google非正式API(更新,已经使用官方 The Google Geocoding API,有效解决部分地区无法找到地标的问题。原API的第三方文档见 mapki.com)。
原文地址:
http://www.lostriver.net/google-latitude-to-renren/
© gkp 发表于 谷奥——探寻谷歌的奥秘 ( http://www.google.org.cn ), 2010. |
没有评论 |
永久链接 |
关于谷奥 |
投稿/爆料
Post tags: Google App Engine, Google Latitude, Google Maps, OAuth, Python, RenRen
欢迎订阅谷安子站,关注Android新闻,技巧及更多