文档章节

OpenAPI 之 开源软件信息预览 ProjectTips

彭博
 彭博
发布于 2014/01/21 17:30
字数 593
阅读 13300
收藏 17

功能说明

    鼠标悬停在文章中用strong标签包裹的开源软件名上时,显示该软件的基本信息,让读者更好的理解提到的技术,降低文章的阅读难度。

演示

    点击去 RunJS 查看演示

    尝试把鼠标停留在 Hadoop 或者 Python 等黑体字上(此示例仅为demo,可用性有待提高)

如何实现

    (1) 主要涉及到两个API:搜索接口 search_list 和 软件详情接口 project_detail

    (2) 使用 JSONP 的数据接口,能够跨域获取数据,根据搜索接口搜索到相关软件列表

    search_list 请求解析:

http://www.oschina.net/action/openapi/search_list 参数说明
?dataType=jsonp 返回数据方式为 JSONP
catalog=project 搜索分类为软件
&callback=callback_method JSONP 回调函数
&client_id={client_id} 应用管理 应用列表中的 应用ID,见 OAuth2 认证基本流程的
&q=hadoop 搜索关键词

    返回结果:

{"searchlist":[
    {"id":19798,"title":"","type":"project","url":"http://www.oschina.net/p/spring-hadoop"},
    {"id":1051,"title":"分布式系统基础架构 Hadoop","type":"project","url":"http://www.oschina.net/p/hadoop"},
    {"id":24403,"title":"Python 的 Hadoop 扩展 Hadoopy","type":"project","url":"http://www.oschina.net/p/hadoopy"},
    {"id":25713,"title":"淘宝Hadoop作业平台 宙斯Zeus","type":"project","url":"http://www.oschina.net/p/alibaba-zeus"},
    ... // MORE
}

    (3) 通过相似性算法列出与 列表中 url 包含的唯一标识相似度最高的的软件

    (4) 如匹配到相似度 ≥0.8 的软件,使用 project_detail 接口请求对应软件

    project_detail 请求解析:

http://www.oschina.net/action/openapi/project_detail 参数说明
?dataType=jsonp 返回数据方式为 JSONP
&callback=callback_method JSONP 回调函数
&client_id={client_id} 应用管理 应用列表中的 应用ID,见OAuth2 认证基本流程的
&ident=hadoop 软件标识

    返回结果:

{
    "id":1051,
    "languages":"Java",
    "title":"Hadoop",
    "extensionTitle":"分布式系统基础架构",
    "body":"Hadoop 是一个分布式系统基础架构......",
    "url":"http://www.oschina.net/p/hadoop",
    "logo":"http://www.oschina.net/img/logo/hadoop.png",
    "document":"http://www.oschina.net/action/project/go?id=1051&p=doc",
    "homepage":"http://www.oschina.net/action/project/go?id=1051&p=home",
    "download":"http://www.oschina.net/action/project/go?id=1051&p=download",
    "recordtime":"2009-11-22 12:23:11",
    "os":"跨平台",
    "favorite":0,
    "license":"Apache"
}

    (5) 将软件信息缓存,并把详情显示出来

    (6) 源码:http://www.oschina.net/js/2013/projectTips.js

© 著作权归作者所有

共有 人打赏支持
彭博

彭博

粉丝 392
博文 1071
码字总数 6801
作品 2
深圳
程序员
私信 提问
加载中

评论(31)

SaintIC
SaintIC

引用来自“添加软件”的评论

oauth2_authencate 搞定了
oauth2_tocken有个问题:
http://www.oschina.net/action/openapi/token?client_id=qCr4nHis3HJCscn3vBgF&client_secret=我不告诉你&grant_type=authorization_code&redirect_uri=http://我不也告诉你/test2.php&code=omRGwx&dataType=json

返回:

{
"error": "400",
"error_description": "Redirect URI mismatch."
}

(我用firefox的RestClient测试的)
请问这个是什么导致的?
s
skcesks
超小白问:怎么创建应用?应用地址 和 回调地址 怎么 填??
╭ァの修罗
╭ァの修罗
失效了
帖子列表
帖子列表
@彭博 @红薯 上面的留言我把client_secrect给泄了, 能帮我删掉那个留言么?
帖子列表
帖子列表

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

还有
我不太会弄这个: http://www.oschina.net/openapi/docs/active_list

http://www.oschina.net/action/openapi/active_list?access_token=7c9456fe-999f-439f-9432-e8155cf5f8ad&dataType=json&catalog=0&user=12&pageSize=20&pageIndex=1

返回:
{

"error": "500",
"error_description": "用户验证失败"

}

怎么办?

呃。。你这里user 你确定是12?是你自己的用户ID噢

好吧,原来只能是自己,那个password参数就是说要登录是么? 还有portrait的问题也麻烦看下哦,谢谢!

哪个password参数?这思维有点跟不上啊

这个也摸索出来了, ok , 谢谢了!
帖子列表
帖子列表

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

还有
我不太会弄这个: http://www.oschina.net/openapi/docs/active_list

http://www.oschina.net/action/openapi/active_list?access_token=7c9456fe-999f-439f-9432-e8155cf5f8ad&dataType=json&catalog=0&user=12&pageSize=20&pageIndex=1

返回:
{

"error": "500",
"error_description": "用户验证失败"

}

怎么办?

呃。。你这里user 你确定是12?是你自己的用户ID噢

好吧,原来只能是自己,那个password参数就是说要登录是么? 还有portrait的问题也麻烦看下哦,谢谢!

<form method="get" enctype="multipart/form-data" action=" http://www.oschina.net/action/openapi/portrait_update?access_token=c4fa7014-9052-4281-8f3f-3de506eba0a7&portrait=20">
File name:<input type="file" name="imgfile"><br>

改为:
<form method="get" enctype="multipart/form-data" action=" http://www.oschina.net/action/openapi/portrait_update?access_token=c4fa7014-9052-4281-8f3f-3de506eba0a7">
File name:<input type="file" name="portrait"><br>

试试

不过那个 portrait 默认值20是什么意思?
帖子列表
帖子列表

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

还有
我不太会弄这个: http://www.oschina.net/openapi/docs/active_list

http://www.oschina.net/action/openapi/active_list?access_token=7c9456fe-999f-439f-9432-e8155cf5f8ad&dataType=json&catalog=0&user=12&pageSize=20&pageIndex=1

返回:
{

"error": "500",
"error_description": "用户验证失败"

}

怎么办?

呃。。你这里user 你确定是12?是你自己的用户ID噢

好吧,原来只能是自己,那个password参数就是说要登录是么? 还有portrait的问题也麻烦看下哦,谢谢!

<form method="get" enctype="multipart/form-data" action=" http://www.oschina.net/action/openapi/portrait_update?access_token=c4fa7014-9052-4281-8f3f-3de506eba0a7&portrait=20">
File name:<input type="file" name="imgfile"><br>

改为:
<form method="get" enctype="multipart/form-data" action=" http://www.oschina.net/action/openapi/portrait_update?access_token=c4fa7014-9052-4281-8f3f-3de506eba0a7">
File name:<input type="file" name="portrait"><br>

试试

非常感谢, 这个问题已经按此方法解决
帖子列表
帖子列表

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

还有
我不太会弄这个: http://www.oschina.net/openapi/docs/active_list

http://www.oschina.net/action/openapi/active_list?access_token=7c9456fe-999f-439f-9432-e8155cf5f8ad&dataType=json&catalog=0&user=12&pageSize=20&pageIndex=1

返回:
{

"error": "500",
"error_description": "用户验证失败"

}

怎么办?

呃。。你这里user 你确定是12?是你自己的用户ID噢

好吧,原来只能是自己,那个password参数就是说要登录是么? 还有portrait的问题也麻烦看下哦,谢谢!

哪个password参数?这思维有点跟不上啊

亲, 对不起, 这几天一直没空弄这个问题!
刚才本来想再试一下, 但是却遇到了另一个问题:
/action/openapi/token
返回
{"error":"401","error_description":"client_secret mismatch: ghwmeecrkt5rvupyzmk7cliihjxn4ctj"}

URI是: http://www.oschina.net/action/openapi/token?client_id=qcr4nhis3hjcscn3vbgf&client_secret=ghwmeecrkt5rvupyzmk7cliihjxn4ctj&grant_type=authorization_code&redirect_uri=http://95.85.17.20/youtube/oscopenapi/test.php&code=Fxd8xg&datatype=json

code确实是:
http://www.oschina.net/action/oauth2/authorize?response_type=code&client_id=qcr4nhis3hjcscn3vbgf&state=xyz&redirect_uri=http://95.85.17.20/youtube/oscopenapi/test.php
所返回的值,

以前是可以的, 今天怎么不对了。


对了 , password指的是 http://www.oschina.net/openapi/docs/active_list 里面的 访问授权限制 这一项的password, 该怎么传值?
Yashin
Yashin

引用来自“我喜欢吴佳旻”的评论

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

还有
我不太会弄这个: http://www.oschina.net/openapi/docs/active_list

http://www.oschina.net/action/openapi/active_list?access_token=7c9456fe-999f-439f-9432-e8155cf5f8ad&dataType=json&catalog=0&user=12&pageSize=20&pageIndex=1

返回:
{

"error": "500",
"error_description": "用户验证失败"

}

怎么办?

呃。。你这里user 你确定是12?是你自己的用户ID噢

好吧,原来只能是自己,那个password参数就是说要登录是么? 还有portrait的问题也麻烦看下哦,谢谢!

哪个password参数?这思维有点跟不上啊
Yashin
Yashin

引用来自“我喜欢吴佳旻”的评论

引用来自“oscfox”的评论

引用来自“我喜欢吴佳旻”的评论

还有
我不太会弄这个: http://www.oschina.net/openapi/docs/active_list

http://www.oschina.net/action/openapi/active_list?access_token=7c9456fe-999f-439f-9432-e8155cf5f8ad&dataType=json&catalog=0&user=12&pageSize=20&pageIndex=1

返回:
{

"error": "500",
"error_description": "用户验证失败"

}

怎么办?

呃。。你这里user 你确定是12?是你自己的用户ID噢

好吧,原来只能是自己,那个password参数就是说要登录是么? 还有portrait的问题也麻烦看下哦,谢谢!

<form method="get" enctype="multipart/form-data" action=" http://www.oschina.net/action/openapi/portrait_update?access_token=c4fa7014-9052-4281-8f3f-3de506eba0a7&portrait=20">
File name:<input type="file" name="imgfile"><br>

改为:
<form method="get" enctype="multipart/form-data" action=" http://www.oschina.net/action/openapi/portrait_update?access_token=c4fa7014-9052-4281-8f3f-3de506eba0a7">
File name:<input type="file" name="portrait"><br>

试试
开源中国 OpenAPI 上线

为了使开源中国更加自由、开放,释放各位 OSCer 的创造力,开源中国 OpenAPI 应运而生。目前该功能处于 Beta 阶段,不影响正常使用,转正式版后数据和应用依然保留。 当前 OpenAPI 基于 OAut...

oschina
2014/02/12
29.5K
146
ThinkPHP/oschina-app

开发说明 项目是基于 APICloud 的,详细的开发文档请看官网文档 UI框架使用的是的AUI 软件说明 部分功能还未开发 #3 ,感兴趣的朋友可以继续开发下去,我若有时间也会继续做的。 我自己测试过...

ThinkPHP
2015/10/15
0
0
OpenAPI 规范 3.0 版接近最终发布

“开放 API 战略” (Open API Initiativev) 发布了 OpenAPI 规范 3.0 版的预览,并规划于今年二月底发布实施草案(Implementer Draft)。 新的 OpenAPI 规范 3.0 带来了如下重大改进: 为实现...

局长
2017/02/07
3.1K
7
ThinkPHP/oschina-apicloud-app

简介 本项目是基于 APICloud 的开发的 OSChina 客户端; 由于作者是搞 PHP 的,前端技术实在很菜,所以代码拼拼凑凑的,还请大家见谅。 使用说明 由于本项目尚未开发完成,还有大量功能未实现...

ThinkPHP
2015/04/03
0
0
pyqt 学习基础 实践2 基于oschina笔记软件的初步界面

笔记软件主界面 这东西大概介绍 我想做一个基于oschina的跨平台的笔记软件(做得好就分享给大家,做的不好就自己收藏....,oschina openapi方面已经熟悉了一下,但是Qt还不是很熟悉,因为还是...

Cosven
2014/08/28
0
2

没有更多内容

加载失败,请刷新页面

加载更多

Coding and Paper Letter(四十五)

资源整理。 1 Coding: 1.Python库gempy,一种基于Python的开源三维结构地质建模软件,它允许从界面和方向数据隐式(即自动)创建复杂的地质模型。 它还支持随机建模以解决参数和模型的不确定...

胖胖雕
42分钟前
1
0
golang 声明一个指定长度的数组,用于后续添加

很多时候我们需要声明一个指定长度的数组,用于后续添加.在使用go的时候要注意,下面的第一个例子会有报错 "non-constant array bound",应该使用第二个例子. Length 是动态的值 有报错的例子 ...

漫步海边小路
45分钟前
0
0
Java NIO示例

Server端 /** * 《构建高性能的大型分布式Java应用》 * 书中的示例代码 * 版权所有 2008---2009 */package book.chapter1.tcpnio;import java.net.InetSocketAddress;i...

月下狼
51分钟前
0
0
发布xxl-job executor dotnet core 执行器的实现

DotXxlJob [github][https://github.com/xuanye/DotXxlJob] xxl-job的dotnet core 执行器实现,支持XXL-JOB 2.0+ 1 XXL-JOB概述 [XXL-JOB][1]是一个轻量级分布式任务调度平台,其核心设计目标...

假正经哥哥
今天
5
0
mysql 查询当天、本周,本月,上一个月的数据

今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1 近7天 SELECT * FROM 表名 wher......

BraveLN
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部