user

package
v0.0.0-...-71333bb Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2015 License: Apache-2.0 Imports: 6 Imported by: 0

README

用户管理接口

打印所有关注用户的示例
package main

import (
	"fmt"

	"github.com/philsong/wechat2/mp"
	"github.com/philsong/wechat2/mp/user"
)

var TokenServer = mp.NewDefaultTokenServer("appid", "appsecret", nil)

func main() {
	clt := user.NewClient(TokenServer, nil)

	iter, err := clt.UserIterator("")
	if err != nil {
		fmt.Println(err)
		return
	}

	for iter.HasNext() {
		openIds, err := iter.NextPage()
		if err != nil {
			fmt.Println(err)
			return
		}

		for _, openId := range openIds {
			userinfo, err := clt.UserInfo(openId, user.Language_zh_CN)
			if err != nil {
				fmt.Println(err)
				continue
			}
			fmt.Printf("%+v\r\n", userinfo)
		}
	}
}

Documentation

Overview

用户管理接口.

Index

Constants

View Source
const (
	Language_zh_CN = "zh_CN" // 简体中文
	Language_zh_TW = "zh_TW" // 繁体中文
	Language_en    = "en"    // 英文
)
View Source
const (
	SEX_UNKNOWN = 0 // 未知
	SEX_MALE    = 1 // 男性
	SEX_FEMALE  = 2 // 女性
)
View Source
const GroupCountLimit = 100 // 一个公众账号,最多支持创建100个分组。
View Source
const (
	UserPageSizeLimit = 10000 // 每次拉取的 OPENID 个数最大值为 10000
)

Variables

View Source
var ErrNoHeadImage = errors.New("没有头像")
View Source
var ErrUserNotSubscriber = errors.New("用户没有订阅公众号")

Functions

This section is empty.

Types

type Client

type Client struct {
	mp.WechatClient
}

func NewClient

func NewClient(TokenServer mp.TokenServer, HttpClient *http.Client) *Client

创建一个新的 Client.

如果 HttpClient == nil 则默认用 http.DefaultClient

func (*Client) CreateGroup

func (clt *Client) CreateGroup(name string) (group *Group, err error)

创建分组.

name: 分组名字(30个字符以内).

func (*Client) GroupRename

func (clt *Client) GroupRename(groupId int64, newName string) (err error)

修改分组名.

name: 分组名字(30个字符以内).

func (*Client) ListGroup

func (clt *Client) ListGroup() (groups []Group, err error)

查询所有分组.

func (*Client) UserInWhichGroup

func (clt *Client) UserInWhichGroup(openId string) (groupId int64, err error)

查询用户所在分组.

func (*Client) UserInfo

func (clt *Client) UserInfo(openId string, lang string) (userinfo *UserInfo, err error)

获取用户基本信息, 如果用户没有订阅公众号, 返回 ErrUserNotSubscriber 错误.

lang 可以是 zh_CN, zh_TW, en, 如果留空 "" 则默认为 zh_CN.

func (*Client) UserIterator

func (clt *Client) UserIterator(beginOpenId string) (iter *UserIterator, err error)

获取用户遍历器, beginOpenId 表示开始遍历用户, 如果 beginOpenId == "" 则表示从头遍历.

func (*Client) UserList

func (clt *Client) UserList(beginOpenId string) (data *UserListResult, err error)

获取关注者列表, 每次最多能获取 10000 个用户, 如果 beginOpenId == "" 则表示从头获取

func (*Client) UserMoveToGroup

func (clt *Client) UserMoveToGroup(openId string, toGroupId int64) (err error)

移动用户分组.

func (*Client) UserUpdateRemark

func (clt *Client) UserUpdateRemark(openId, remark string) (err error)

开发者可以通过该接口对指定用户设置备注名.

NOTE: 该接口暂时开放给微信认证的服务号.

type Group

type Group struct {
	Id        int64  `json:"id"`    // 分组id, 由微信分配
	Name      string `json:"name"`  // 分组名字, UTF8编码
	UserCount int    `json:"count"` // 分组内用户数量
}

用户分组

type UserInfo

type UserInfo struct {
	OpenId   string `json:"openid"`   // 用户的标识,对当前公众号唯一
	Nickname string `json:"nickname"` // 用户的昵称
	Sex      int    `json:"sex"`      // 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
	Language string `json:"language"` // 用户的语言,zh_CN,zh_TW,en
	City     string `json:"city"`     // 用户所在城市
	Province string `json:"province"` // 用户所在省份
	Country  string `json:"country"`  // 用户所在国家

	// 用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),
	// 用户没有头像时该项为空
	HeadImageURL string `json:"headimgurl,omitempty"`

	// 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
	SubscribeTime int64 `json:"subscribe_time"`

	// 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
	UnionId string `json:"unionid,omitempty"`

	// 备注名
	Remark string `json:"remark,omitempty"`
}

func (*UserInfo) HeadImageSize

func (info *UserInfo) HeadImageSize() (size int, err error)

获取用户图像的大小, 如果用户没有图像则返回 ErrNoHeadImage 错误.

type UserIterator

type UserIterator struct {
	// contains filtered or unexported fields
}

用户遍历器

iter, err := Client.UserIterator("beginOpenId")
if err != nil {
    // TODO: 增加你的代码
}

for iter.HasNext() {
    openids, err := iter.NextPage()
    if err != nil {
        // TODO: 增加你的代码
    }
    // TODO: 增加你的代码
}

func (*UserIterator) HasNext

func (iter *UserIterator) HasNext() bool

func (*UserIterator) NextPage

func (iter *UserIterator) NextPage() (openids []string, err error)

func (*UserIterator) Total

func (iter *UserIterator) Total() int

type UserListResult

type UserListResult struct {
	TotalCount int `json:"total"` // 关注该公众账号的总用户数
	GotCount   int `json:"count"` // 拉取的OPENID个数,最大值为10000

	Data struct {
		OpenId []string `json:"openid,omitempty"`
	} `json:"data"` // 列表数据,OPENID的列表

	// 拉取列表的后一个用户的OPENID, 如果 next_openid == "" 则表示没有了用户数据
	NextOpenId string `json:"next_openid"`
}

获取关注者列表返回的数据结构

Directories

Path Synopsis
网页授权获取用户基本信息.
网页授权获取用户基本信息.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL