#### 粉丝信息获取、使用及更新的规范
由于系统中模块众中,如果模块不按规范及系统提供的方法来操作粉丝信息,很容易会使粉丝信息错乱、重复,不仅系统会产生很多冗余数据,对于构造统一化的粉丝及会员数据中心也带来了很大的困难
以下来梳理一下各种情况如何使用系统中的方法来获取和更新粉丝信息。
> 注: 模块中禁止直接插入、更新、删除操作mapping\_fans表,此规范适合于 0.7\_20151012 以后的版本
#### 粉丝的Openid获取方法
获取粉丝的Openid有两种办法:
* 通过回复关键字来获取粉丝的openid信息 此方法适合于没有任何服务号权限的公众号,可以通过设置回复关键字,在回复的信息中(文本、图文)中添加链接
此链接会自动带上粉丝的Openid数据,进入系统后可通过$\_W\[‘openid’\]和$\_W\[‘fans’\]来查看
* 通过OAuth接口来获取粉丝的openid信息 此方法并不需要开发者来主动调用,当公众号是服务号或是使用了【借用OAuth权项】(管理公众号 - 功能选项 - 借用OAuth权限)的话 系统会自动在粉丝进入页面的时候获取到其openid的信息,使用方法同上,通过$\_W\[‘openid’\]和$\_W\[‘fans’\]来查看
#### 粉丝信息获取方法
此处讨论的通过微信接口获取粉丝数据是基于服务号的前提//
获取粉丝信息有多种方法及渠道,总结有以下几种:
* 已关注的粉丝从**微信接口**获取数据数据(昵称,头像等)
* 已关注的粉丝获取在**微擎系统**资料数据(电话,邮箱,性别等)
* 未关注的粉丝从微信接口获取数据数据(昵称,头像等)
##### 已关注的粉丝从微信接口获取昵称及头像数据
已关注的粉丝,当公众号有获取信息权限的时候,可直接通过$\_W\[‘fans’\]来得到粉丝的数据 \\ 也可以手动通过 mc\_fansinfo($openid) 函数来获取。注:此数据只是微信端的昵称,头像等数据
结构如下:
~~~
$_W['fans'] = array( 'fanid' => '33790' // 粉丝id 'acid' => '6' 'uniacid' => '6' // 公众号id 'uid' => '6944' // 用户id 'openid' => 'oTKzFjv2FQ7EetJGLbxuGY6m0KmY' 'groupid' => '0' // 用户组id 'salt' => 'FRj8Bffr' 'follow' => '1' // 是否关注 'followtime' => '1444465409' // 关注时间 'unfollowtime' => '0' // 取消关注 'tag' => array( 'subscribe' => '1' // 关注 'openid' => 'oTKzFjv2FQ7EetJGLbxuGY6m0KmY' 'nickname' => '微擎 ' //昵称 'sex' => '1' // 性别 'language' => 'zh_CN' // 语言 'city' => '北京'// 居住城市 'province' => '北京' // 省份 'country' => '中国' // 国家 'subscribe_time' => '1444465409' // 关注时间 'remark' => '' 'groupid' => '0' 'avatar' => 'http://wx.qlogo.cn/mmopen/GibvHudxm<x>lJYsBJRlWbtSXADlpc0IatIuAjS2Fm9oF6tvIq1GfPMibhyRRcdJdR4ZA0x6CIx3030I37OuGEFf4kg/0'// 头像 ) 'updatetime' => '1444465531' // 更新日期 'nickname' => '微擎' // 昵称 'unionid' => '' 'from_user' => 'oTKzFjv2FQ7EetJGLbxuGY6m0KmY' // 当前粉丝标识)
~~~
##### 已关注的粉丝获取在微擎系统会员资料数据
除了可以获取粉丝在微信端的昵称等数据外,也可以获取到其在微擎系统中登记的额外的会员数据资料。
通过 mc\_fetch($uid) 函数来获取。此处的$uid可以是$\_W\[‘fans’\]\[uid\]也可以是$\_W\[‘openid’\]。
会员资料数据如下:
~~~
array( 'uid' => '6944' // 用户id 'uniacid' => '6' // 公众号id 'mobile' => // 手机 'email' => 'ab75d41d9679b7742fe3c8a7c9577e2a@we7.cc' // email地址 'password' => 'c1e1d8b8c781f0df6866a495a849f9df' // 密码 'salt' => 'qefDD454' 'groupid' => '6' // 用户组id 'credit1' => '0.00' // 积分 'credit2' => '0.00' // 余额 'credit3' => '0.00' // 备用1 'credit4' => '0.00' // 备用2 'credit5' => '0.00' // 备用3 'createtime' => '1444465531' // 创建时间 'realname' => // 真实姓名 'nickname' => '微擎' // 昵称 'avatar' => 'http://wx.qlogo.cn/mmopen/GibvHudxm<x>lJYsBJRlWbtSXADlpc0IatIuAjS2Fm9oF6tvIq1GfPMibhyRRcdJdR4ZA0x6CIx3030I37OuGEFf4kg/132' //头像 'qq' => //QQ号 'vip' => '0' // 会员 'gender' => '1' // 性别 'birthyear' => '0' // 出生年 'birthmonth' => '0' // 出生月 'birthday' => '0' // 出生日 'constellation' => // 星座 'zodiac' => '', //生肖 'telephone' => // 手机号 'idcard' => // 身份证号 'studentid' => // 学号 'grade' => // 学籍 'address' => //地址 'zipcode' => //邮政编码 'nationality' => '中国' // 现居国家 'resideprovince' => '北京'// 现居省分 'residecity' => '北京市' // 现居地市 'residedist' => // 居住地 'graduateschool' => // 毕业院校 'company' => // 公司信息 'education' => // 教育情况 'occupation' => // 职业 'position' => // 所在位置 'revenue' => // 收入情况 'affectivestatus' => // 身高 'lookingfor' => // 'bloodtype' => // 血型 'height' => // 身高 'weight' => // 体重 'alipay' => // 支付宝 'msn' => // msn 'taobao' => // 淘宝号 'site' => // 站点 'bio' => 'interest' => // 个人兴趣)
~~~
##### 未关注的粉丝从微信接口获取数据数据(借用)
粉丝未关注公众号获取资料时,需要弹出确认授权的登录框,粉丝同意后公众号才可以获取到用户信息,此操作需要手动调动函数来完成。
通过 mc\_oauth\_userinfo() 来获取粉丝信息,如下:
~~~
if (empty($_W['fans']['nickname'])) { mc_oauth_userinfo();}print_r($_W['fans']);$_W['fans'] = array( 'uid' => 0, 'openid' => 'oTKzFjv2FQ7EetJGLbxuGY6m0KmY', 'follow' => '0' // 是否关注 'tag' => array( 'subscribe' => '1' // 关注 'openid' => 'oTKzFjv2FQ7EetJGLbxuGY6m0KmY' 'nickname' => '微擎 ' //昵称 'sex' => '1' // 性别 'language' => 'zh_CN' // 语言 'city' => '北京'// 居住城市 'province' => '北京' // 省份 'country' => '中国' // 国家 'subscribe_time' => '1444465409' // 关注时间 'remark' => '' 'groupid' => '0' 'avatar' => 'http://wx.qlogo.cn/mmopen/GibvHudxm<x>lJYsBJRlWbtSXADlpc0IatIuAjS2Fm9oF6tvIq1GfPMibhyRRcdJdR4ZA0x6CIx3030I37OuGEFf4kg/0'// 头像 ))
~~~
#### 强制粉丝登记扩展信息方法(会员信息)
在使用一些功能时,需要用户的一些额外信息,比如真实姓名,手机号等,才能使用,需要粉丝进行登记操作,使用 mc\_require($uid, $fields) 来让用户登录信息。如下:
~~~
//注:第一个参数同样接受Openid或是Uid//此方法会判断用户是否已经填写过资料,如果填写过了就会继续向下执行,如果未填写,会跳转到填写界面mc_require($_W['fans']['uid'], array('realname', 'mobile'));
~~~
注: 无论粉丝是否关注公众号,都可以产生一条uid数据也是通过$\_W\[‘fans’\]\[‘uid’\]来获取
#### 更新已关注粉丝扩展信息方法(会员信息)
在模块功能开发中如果需要更新一些资料信息,比如真实姓名,手机号等,可以使用 mc\_update()函数来操作
~~~
//注:第一个参数同样接受Openid或是Uidmc_update($_W['member']['uid'],array('email' => 'test@163.com'));
~~~
- 微信消息
- 概述
- 响应流程
- 入门指引
- 安装微擎
- 环境安装
- 百度云(微擎镜像)
- 宝塔(Linux)推荐
- 注册云服务
- 代码规范
- php编码规范
- 数据库设计
- 文件目录规范
- JavaScript编辑码规范
- 微擎框架
- 目录结构
- 数据库字典
- 配置选项
- 数据库配置
- 系统COOKIE配置项
- 系统设置
- 上传配置 (已废弃,统一在系统附件设置中更改)
- 预定义常量
- 全局变量
- 全局配置
- 系统配置
- 公众号相关
- Web 端可见
- App 端可见
- 网页授权
- URL 路由
- url
- createMobileUrl
- createWebUrl
- 文件加载器
- func
- class
- model
- web
- app
- library
- object
- singleton
- 缓存机制
- cache_write
- cache_load
- cache_delete
- cache_clean
- cache_system_key
- 数据库
- SQL注入安全
- 连接其它数据库
- 数据库函数列表
- pdo_get
- pdo_getcolumn
- pdo_getall
- pdo_getslice
- pdo_fetch
- pdo_fetchcolumn
- pdo_fetchall
- pdo_insert
- pdo_update
- pdo_delete
- pdo_query
- pdo_run
- pdo_fieldexists
- pdo_indexexists
- pdo_tableexists
- pdo_fieldmatch
- pdo_debug
- 链式查询
- from
- select
- where
- whereor
- having
- groupby
- orderby
- leftjoin
- innerjoin
- on
- limit
- page
- get
- getall
- getcolumn
- count
- exists
- getLastQueryTotal
- getLastQuery
- 错误处理
- 日志记录
- 模板引擎
- 模板标签
- 输出变量
- 判断语句
- 循环语句
- php语句
- 引用模板
- 创建URL
- 转义附件URL
- 输出花括号
- 数据调用
- 调用微站导航
- 调用幻灯片
- 调用文章列表
- 调用文章评论
- 调用分类列表
- 调用快捷菜单
- 常用变量
- 函数列表
- 系统公共函数
- istripslashes
- ihtmlspecialchars
- isetcookie
- token
- random
- checksubmit
- checkcaptcha
- tablename
- array_elements
- range_limit
- ijson_encode
- iserializer
- iunserializer
- is_base64
- is_serialized
- wurl
- murl
- pagination
- tomedia
- referer
- strexists
- cutstr
- istrlen
- emotion
- authcode
- sizecount
- bytecount
- array2xml
- xml2array
- scriptname
- utf8_bytes
- isimplexml_load_string
- aes_decode
- aes_encode
- ihtml_entity_decode
- iarray_change_key_case
- parse_path
- strip_gpc
- to_global_media
- 参数安全函数
- 业务公共函数
- Http请求函数
- ihttp_request
- ihttp_get
- ihttp_post
- ihttp_email
- 文件操作函数
- file_write
- file_read
- file_move
- file_tree
- file_copy
- file_upload
- file_wechat_upload
- file_remote_upload
- file_random_name
- file_delete
- file_remote_delete
- file_image_thumb
- file_image_crop
- file_lists
- file_remote_attach_fetch
- file_is_image
- mkdirs
- rmdirs
- 数据库维护函数
- db_table_schema
- db_table_serialize
- db_table_create_sql
- db_schema_compare
- db_table_fix_sql
- _db_build_index_sql
- _db_build_field_sql
- db_table_schemas
- db_table_insert_sql
- Web端公共函数
- url web
- message
- checklogin
- checkaccount
- template
- App端公共函数
- url app
- checkauth
- message app
- template app
- register_jssdk
- 安全操作函数
- 模板组件列表
- Web端组件
- _tpl_form_field_date
- tpl_form_field_link
- tpl_form_module_link
- tpl_form_field_emoji
- tpl_form_field_color
- tpl_form_field_icon
- tpl_form_field_image
- tpl_form_field_multi_image
- tpl_form_field_audio
- tpl_form_field_multi_audio
- tpl_form_field_video
- tpl_form_field_wechat_image
- tpl_form_field_wechat_multi_image
- tpl_form_field_wechat_voice
- tpl_form_field_wechat_video
- tpl_form_field_location_category
- tpl_ueditor
- tpl_edit_sms
- tpl_coupon_colors
- App端组件
- _tpl_form_field_date app
- tpl_app_fans_form
- tpl_app_form_field_calendar
- tpl_app_form_field_district
- tpl_app_form_field_avatar
- tpl_app_form_field_image
- tpl_app_coupon_item
- 系统公共组件
- tpl_form_field_date
- tpl_form_field_clock
- tpl_form_field_daterange
- tpl_form_field_calendar
- tpl_form_field_district
- tpl_form_field_category_2level
- tpl_form_field_industry
- tpl_form_field_coordinate
- tpl_fans_form
- 支付API
- 发起支付(PHP)
- 发起支付(JS)
- 验证支付
- 退款(微信、支付宝)
- 微信API
- 基础
- 粉丝(公众号)
- fansAll
- fansQueryInfo
- fansBatchQueryInfo
- 粉丝标签(公众号)
- fansTagAdd
- fansTagFetchAll
- fansTagEdit
- fansTagDelete
- fansTagGetUserlist
- fansTagTagging
- fansTagBatchTagging
- fansTagBatchUntagging
- fansTagFetchOwnTags
- 自定义菜单(公众号)
- menuCreate
- menuDelete
- menuCurrentQuery
- menuQuery
- 二维码(公众号)
- barCodeCreateDisposable
- barCodeCreateFixed
- 客服消息(公众号)
- 模板消息(公众号)
- 群发(公众号)
- fansSendAll
- fansSendPreview
- 临时素材(公众号)
- uploadMedia
- downloadMedia
- 永久素材(公众号)
- uploadMediaFixed
- addMatrialNews
- uploadNewsThumb
- uploadVideoFixed
- editMaterialNews
- getMaterial
- getMaterialCount
- delMaterial
- batchGetMaterial
- 短网址(公众号)
- 共享收货地址(公众号)
- JSSDK(公众号)
- 自定义分享(公众号)
- 小程序码
- getCodeLimit
- getCodeUnlimit
- 云服务API
- 本地调试
- 键值对存储
- 查询模块信息
- 查询站点信息
- 发短信
- 常见问题
- 设置开发模式
- 调试sql语句
- 微信图片盗链
- mac系统压缩包无法上传
- reditect_url 参数错误
- GIT发布(上传大文件)
- 共享包
- iframe跨域解决方案
- 更新出错如何恢复
- 小程序开发
- 与微擎通信
- 模块中定义文件
- 接口验签
- PHP接口返回值
- 接口版本
- session机制
- 发起支付
- util.js工具库
- util.url
- util.request
- util.getUserInfo
- util.navigateBack
- util.footer
- util.message
- util.showLoading
- util.showImage
- util.parseContent
- util.date
- isLeapYear
- dateToStr
- dateAdd
- dateDiff
- dateToLong
- longToDate
- isDate
- getMaxDay
- toArray
- datePart
- maxDayOfDate
- util.md5
- util.base64Encode
- util.base64Decode
- app.js
- 获取用户信息
- 应用开发
- 机制说明
- 命名空间
- 定义微擎首页
- 智能应答
- 自定义分享
- 分离代码
- 粉丝信息
- manifest.xml
- install.php和upgrade.php
- 设计应用
- 全局变量1
- MODULE_URL
- MODULE_ROOT
- $_W[current_module]
- 安装、更新与卸载
- 发布应用
- 功能文件
- module.php
- site.php
- wxapp.php
- result
- webapp.php
- mobileapp.php
- hook.php
- receiver.php
- systemwelcome.php
- 支付
- 在php中发起支付
- 在微信浏览器中发起
- 在小程序中发起
- 验证支付结果
- 云商城常见问题
- 发布应用1
- 应用文档结构
- manifest.xml -
- 发布应用错误提示
- git 大文件发布
- 云Api发布
- 对外接口
