`
zzc1684
  • 浏览: 1222689 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

微信开放平台:朋友圈API参考文档

阅读更多

用户授权

客户端的授权流程

针对没有后台服务器的 App 类型,如移动平台的 App 应用,微信使用 OAuth2.0 的 Implicit Grant 方式授权,流程如下:

  1. 用户访问第三方应用,使用到分享至微信朋友圈的功能,应用检测到没有用户的授权信息,于是将用户引导至授权页面;
  2. 当用户未登录时,将要求先登录,否则继续下一步;
  3. 授权页面为一个对话框,显示应用信息以及请求的访问权限,并提示用户选择允许或拒绝;
  4. 对话框将重定向回应用,若授权成功则带上 Access Token,否则带上相应的错误码。

客户端授权流程得到的 Access Token 有效期为 2 小时,过期后需重新走授权流程。

服务器端的授权流程

服务端的授权流程为 OAuth2.0 定义的 Authentication Code Grant 的授权方式,我们推荐朋友圈应用使用服务端的授权流程。在该授权流程中,App 除了可以得到用户的 AccessToken 外还有 RefreshToken, RefreshToken 过期时间为一年。

服务端的授权流程如下:

  1. 当用户未登录时,将要求先登录,否则继续下一步;
  2. 授权页面为一个对话框,显示应用信息以及请求的访问权限,并提示用户选择允许或拒绝;
  3. 当用户允许后,微信将以重定向的方式回到App,并带上一个授权码,否则将提示失败;
  4. 第三方应用通过后台访问微信 API,通过授权码换取Access Token和Refresh Token。

通过服务端的授权流程得到的 AccessToken 有效期为 30 天,过期后使用 RefreshToken 即可换取新的 AccessToken。

授权连接

URL: https://open.weixin.qq.com/oauth

参数列表 参数含义
appid 从微信开放平台申请的AppId
response_type 返回类型,值为code或token之一
redirect_uri 授权成功后的重定向页面,默认为App预留在微信的uri
scope 可选参数,所申请授权的资源域,以空格分开,目前仅支持并默认选择post_timeline
state 可选参数,自定义重定向uri的参数

服务端流程请求连接样例:
https://open.weixin.qq.com/oauth?appid=hello&response_type=code

用户成功授权后返回样例:
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=SplxlOBeZQQYbYS6WxSbIA

用户拒绝授权的返回样例:
HTTP/1.1 302 Found
Location: https://client.example.com/cb?error=access_denied

客户端流程请求连接样例:
https://open.weixin.qq.com/oauth?appid=hello&response_type=token

用户成功授权后返回样例:
HTTP/1.1 302 Found
Location: https://client.example.com/cb#access_token=ASDFBCDEFGHIJKLMN&expires_in=259200

用户拒绝授权的返回样例:
HTTP/1.1 302 Found
Location: https://client.example.com/cb#error=access_denied

API列表

名称 功能
GET /token 获取Access Token
POST /media 上传附件
GET /media/:media_id 下载附件内容
POST /timeline 发表到朋友圈

GET /token

URL: https://api.weixin.qq.com/token.format

用于通过授权code换取access token和refresh token,或用于通过refresh token换取新的access token。

参数列表 参数含义
grant_type 获取的token类型,authentication_code 或 refresh_token
code 当grant_type为authentication_code时填写,此为用户授权后得到的授权码
refresh_token 当grant_type为refresh_token时填写
redirect_uri 当grant_type为authentication_code时填写,需和oauth步骤所填写的redirect_uri相同

当应用走服务器端的授权流程时,通过该API使用授权码换取access token和refresh token,此时grant_type需设置为authentication_code,请求URL如下:

GET "https://api.weixin.qq.com/token?appid=wx1234hello" "&grant_type=authorization_code&code=4433222&redirect_Uri=" "http%3A//www.example.com/weixin_redirect"

返回样例:

{
    "refresh_token" : "93Zkx2gyQVaeIbS1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_
               wwasdfLNNLfmn023mNA0nX",
    "access_token"  : "3Zkx2gyQVaeIbS1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_Lj
               JqUNdYDYlyxrGOw1ywdb4sAyahgskuUBvSSx6EO2oxowQmcwdC3YTDkSJPTF
               6yoKpfZkY2mIGBeaMZKsXcfWoTP94g",
    "expires_in"    : 7200
}

当access token过期时,可通过refresh token获取新的access token,请求样例:

GET "https://api.weixin.qq.com/token?appid=wx1234abcd" "&grant_type=refresh_token&secret=egs1mwxkfpt459" "&refresh_token=93Zkx2gyQVaeIbS1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_wwasdfLNNLfmn023mNA0nX"

返回样例:

{
    "access_token" : "K3Zkx2gyQVaeIbinDDmZ1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_
                      LjJqUNdYDYlyxrGOw1ywdGGb4sAyahgskuUBvSSx6EO2oxowQmcwdC3YTDkSJPTF
                      6yoKpfZkY2mIGBeaMZKs",
    "expires_in"   : 7200
}

POST /media

URL: https://api.weixin.qq.com/media.format

参数列表 参数含义
type 附件类型,目前仅支持image
media[] 附件内容

该API用于上传一个附件到微信服务器,成功后将得到一个媒体id(media_id)表示该附件,从而分享至用户朋友圈。
上传的图片大小限制为2M,如果原图宽度超过640px,微信服务器将对图片进行等比例缩放后存储。

请求样例(使用curl工具):

curl -F "media=@test.jpg" "https://api.weixin.qq.com/media?type=image&access_token=3Zkx2gyQVaeIbS1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_LjJqUNdYDYlyxrGOw1ywdb4sAyahgskuUBvSSx6EO2oxowQmcwdC3YTDkSJPTF6yoKpfZkY2mIGBeaMZKsXcfWoTP94g"

返回样例:

{
    "media_id"   : "fPPPmh9EBsgdrqaSJvl6nPvchUfbDxN8lmGTMBN2BWABP_usGso5Qx7raSraaXAT",
    "type"       : "image",
    "created_at" : 1335415865
}

GET /media/:media_id

URL: https://api.weixin.qq.com/media/:media_id.format

参数列表 参数含义
media_id 附件id

该API用于下载媒体附件。

请求样例(使用curl工具):

curl "https://api.weixin.qq.com/media/fPPPmh9EBsgdrqaSJvl6nPvchUfbDxN8lmGTMBN2BWABP_usGso5Qx7raSraaXAT?access_token=3Zkx2gyQVaeIbS1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_LjJqUNdYDYlyxrGOw1ywdb4sAyahgskuUBvSSx6EO2oxowQmcwdC3YTDkSJPTF6yoKpfZkY2mIGBeaMZKsXcfWoTP94g"

POST /timeline

URL: https://api.weixin.qq.com/timeline.format

参数列表 参数含义
content_type 指定消息的类型,必填,目前支持五类:text、photo、feed、video和music。
title 一句话描述,当content_type是feed时为必填字段。
对于content_type为feed,该字段可以是文章标题;
对于content_type为music,该字段可以是歌曲名和歌手;
对于content_type为video,该字段可以是视频的名称。
media_list media_id列表,content_type为feed、music和video时必填。多个media_id以“,”分隔。
当content_type为photo,最多可以提供9个media_id,多出部分会被抛弃。
当content_type为feed、music和video时,只可提供1个media_id作为消息的缩略图,多出部分会被抛弃。
media_url 音乐文件地址,当content_type为music时必填。协议支持http和https,格式支持mp3和wav。
content_url 内容链接,当content_type为feed、music和video时必填
coordinates 经纬度,用“,”分隔,可选。数据格式为(latitude,longitude)

该API用于分享内容至用户的朋友圈中,title或media_list两个参数至少选择其中之一。

请求示例 1(使用curl工具):

curl -d "title=hello&coordinates=10.00,10.00&media_list=fPPPmh9EBsgdrqaSJvl6nPvchUfbDxN8lmGTMBN2BWABP_usGso5Qx7raSraaXAT,fPPPmh9EBsgdrqaSJvl6nPvchUfbDxN8lmGTMBN2BWABP_usGso5Qx7raSraaXAT"
"https://api.weixin.qq.com/timeline?access_token=3Zkx2gyQVaeIbS1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_LjJqUNdYDYlyxrGOw1ywdb4sAyahgskuUBvSSx6EO2oxowQmcwdC3YTDkSJPTF6yoKpfZkY2mIGBeaMZKsXcfWoTP94g"

成功返回:

{
    "id"         : 11232109051049549826,
    "created_at" : 1333007682
}

失败返回:

{
    "time"         : 1338972300,
    "error" : { "msg": "content_url is missing", "code": 40329 }
}

请求示例 2:

curl -d "title=Complcated&coordinates=24.00,114.00&media_list=L5JPCzX96wnwcE4Hthh&content_url=http%3A%2F%2Fy.qq.com%2Fi%2Fsong.html%23p%3D7B2273&media_url=http%3A%2F%2Fy.qq.com%2Fi%2Fsong.html%23p%3D7B2273&content_type=music"
"https://api.weixin.qq.com/timeline?access_token=3Zkx2gyQVaeIbS1CTDFSZilrVyj1Q1Ts2UeArlEnbrP6bKDyWAz4WlIHu_LjJqUNdYDYlyxrGOw1ywdb4sAyahgskuUBvSSx6EO2oxowQmcwdC3YTDkSJPTF6yoKpfZkY2mIGBeaMZKsXcfWoTP94g"

请求示例2在微信朋友圈展示的效果图如下::

分享到:
评论

相关推荐

    高仿微信朋友圈

    《高仿微信朋友圈:构建社交分享平台的关键技术与实践》 微信朋友圈作为中国最流行的社交媒体功能之一,其设计和实现包含了一系列复杂的技术和策略。在本文中,我们将深入探讨如何构建一个类似“高仿微信朋友圈”的...

    微信HTML5在线朋友圈游戏源码带安装部署教程-画个圆.rar

    6. **微信开放平台**:为了在微信上发布小游戏,开发者需要注册成为微信开放平台的开发者,并遵循其开发规范和接口文档。 7. **交互设计**:"画个圆"可能涉及触摸屏或鼠标事件监听,实现用户与游戏的互动。 8. **...

    微信HTML5在线朋友圈游戏源码带安装部署教程-密室逃生.rar

    "微信HTML5在线朋友圈游戏源码带安装部署教程-密室逃生.rar" 这个标题表明我们正在处理的是一个基于HTML5技术开发的微信朋友圈游戏的源代码,具体类型为“密室逃生”。源码是游戏开发的核心部分,包含了编写游戏的...

    微信小程序点击生成朋友圈分享图(遇到的坑)

    在微信小程序开发中,生成朋友圈分享图是一项常见的需求,它允许用户将自定义的图片分享到朋友圈,增强用户体验。在实现这一功能时,开发者可能会遇到各种问题,本篇将详细介绍这些“坑”以及如何解决。 首先,我们...

    微信HTML5在线朋友圈游戏源码带安装部署教程-切割果冻片.rar

    5. **部署到微信**:如果你想在微信朋友圈发布这个游戏,你需要将游戏上传到微信小游戏平台。首先注册微信开发者账号,然后按照官方文档进行小游戏的开发和提交审核。注意,微信小游戏有一些特定的API和规范,需要对...

    基于python+appium的android微信自动添加好友及爬取其朋友圈的爬虫.zip

    标题中的“基于python+appium的android微信自动添加好友及爬取其朋友圈的爬虫”表明这个项目使用Python编程语言,结合Appium自动化测试框架,实现了对Android版微信的自动化操作,包括自动添加好友和爬取朋友圈内容...

    微信HTML5在线朋友圈游戏源码带安装部署教程-极限超车.zip

    5. 社交集成:作为一款微信朋友圈游戏,源码应包含与微信平台的接口对接,如登录验证、分享到朋友圈、邀请好友等功能。这通常涉及到微信的JS-SDK,开发者需要注册微信开发者账号并获取相关权限。 安装部署教程通常...

    微信HTML5在线朋友圈游戏源码带安装部署教程-月饼大战.zip

    5. **许可证和文档**:关于源码的使用许可,以及可能的游戏设计文档、API参考等。 对于开发者来说,通过学习这个源码,可以了解HTML5游戏的开发流程,掌握如何利用Canvas或WebGL进行图形渲染,如何处理用户输入事件...

    微信分享调用

    "微信分享调用"是这个过程的技术实现,主要涉及微信开放平台的相关API和集成步骤。下面我们将详细介绍如何在客户端实现微信分享到朋友圈的功能。 首先,要使用微信分享功能,你需要在微信开放平台上注册一个开发者...

    微信分享获得图片和文字描述,微信分享源码.zip

    微信分享的基本流程是:用户在应用中触发分享操作,应用调用微信SDK中的接口,将要分享的内容(如图片、文字描述等)传递给微信,然后微信处理这些内容并展示给用户,供其选择发送给微信好友或朋友圈。 1. **设置...

    微信开发SDK,libammsdk.jar

    `libammsdk.jar`是微信官方提供的一个核心库文件,它包含了微信开放平台的API接口,用于实现诸如微信登录、分享、支付等功能。在本文中,我们将深入探讨如何使用这个SDK以及相关的开发流程。 1. **微信SDK概述**: ...

    微信SDK和实例

    6. 微信开放平台资源:微信提供了丰富的开发文档、API参考、示例代码和社区支持,开发者可以充分利用这些资源解决开发过程中遇到的问题。 通过学习和实践微信SDK,开发者不仅可以实现用户授权登录,还可以实现微信...

    微信分享ticket生成源码实例

    这是微信开放平台提供的一种安全验证方式,用于获取用户的微信基本信息以及进行后续的API调用。在分享功能中,我们通常需要获取到一个叫做“access_token”的关键凭证,它是通过OAuth2.0流程获取的。 1. **获取...

    .net微网页分享到微信朋友圈插件代码(0515).rar

    综上所述,".NET微网页分享到微信朋友圈插件代码(0515)"涵盖了.NET后端与微信API的交互、OAuth2.0授权、前端微信JS-SDK的使用等多个技术环节。通过深入理解这些知识点,开发者可以构建自己的微信分享功能,提升微...

    基于javaScript开发的仿微信朋友圈 +小程序端社区+源码+项目文档+运行教程(毕业设计&课程设计&项目开发)

    基于javaScript开发的仿微信朋友圈 +小程序端社区+源码+项目文档+运行教程,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于javaScript开发的仿微信朋友圈 +小...

    Android-利用高德地图关键字检索POI-实现仿微信发朋友圈搜索附近位置

    以上就是实现“仿微信发朋友圈搜索附近位置”功能的主要步骤和技术点,具体实现细节可能需要参考高德地图的官方文档和示例代码,例如提供的`PoiDemo-master`项目,它应该包含了一个完整的示例,可以帮助你理解和实践...

    tp微信自定义分享功能demo

    在微信自定义分享中,ThinkPHP可以帮助开发者轻松集成微信SDK,实现用户在微信内分享内容到朋友圈、微信好友等渠道,同时可以根据业务需求定制分享的标题、描述和图片。 1. **微信开放平台注册与认证**: 在实现...

    html5手机网站调用微信分享

    6. **分享到微信朋友圈**:这是微信分享的核心功能。通过`wx.onMenuShareTimeline`接口,开发者可以设置分享到朋友圈的标题、描述、链接和图片。当用户点击微信右上角的分享按钮时,内容就会按照设定显示在朋友圈。 ...

    微信小程序源码:多肉植物图鉴.rar

    - 分享功能:用户可以将发现的多肉植物分享到微信朋友圈或者聊天中。 - 收藏功能:用户可以收藏喜欢的植物,方便日后查看。 - 用户交互:可能包含评论、点赞、提问等社交元素,增加用户参与度。 4. **开发与调试...

    html5小游戏 honghaishilv (微信朋友圈).zip.zip

    HTML5小游戏在近年来深受开发者和用户喜爱,尤其在微信朋友圈这样的社交平台上,它们凭借轻量化、易分享的特点,成为互动娱乐的重要形式。"honghaishilv"是一款专为微信朋友圈设计的HTML5小游戏,它利用了HTML5技术...

Global site tag (gtag.js) - Google Analytics