OpenAPI 之 开源软件信息预览 ProjectTips

原创
2014/01/21 17:30
阅读数 3.2W

功能说明

    鼠标悬停在文章中用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

展开阅读全文
打赏
2
17 收藏
分享
加载中

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

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测试的)
请问这个是什么导致的?
2016/12/13 11:28
回复
举报
超小白问:怎么创建应用?应用地址 和 回调地址 怎么 填??
2016/02/26 16:22
回复
举报
失效了
2014/06/10 19:42
回复
举报
@彭博 @红薯 上面的留言我把client_secrect给泄了, 能帮我删掉那个留言么?
2014/03/06 01:08
回复
举报

引用来自“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 , 谢谢了!
2014/03/06 01:06
回复
举报

引用来自“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是什么意思?
2014/03/06 00:58
回复
举报

引用来自“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>

试试

非常感谢, 这个问题已经按此方法解决
2014/03/06 00:56
回复
举报

引用来自“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, 该怎么传值?
2014/03/06 00:25
回复
举报

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

引用来自“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参数?这思维有点跟不上啊
2014/03/02 23:05
回复
举报

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

引用来自“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>

试试
2014/03/02 23:01
回复
举报
更多评论
打赏
31 评论
17 收藏
2
分享
返回顶部
顶部