如何获取Openid
匿名 · 更新于 2015/12/16
1、如果用户没有关注公众平台,那么需要通过网页授权获取,具体看开发者文档→用户管理→网页授权获取用户信息部分。
2、如果用户关注了公众号,那么直接在事件推送的时候就可以获取,比如订阅事件触发后,会推送一下xml信息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> </xml>
如果用的是微信PHP-SDK,则更方便,以下是PHP-SDK对象的属性列表,每次事件触发回调服务器URL,都会生成weObj对象,而基本常用信息都在其中,openid就是_receive中的FromUserName
$openid=$this->weObj->getRevFrom()
myweobj:Org\Util\Wechat::__set_state(array(
'token' => 'qQemtM3tK5b5MejQDBKB',
'encodingAesKey' => 'WMUypCpCY3YcyDjqAlAunHNSkT2Iw6ySwCArlyPT05n',
'encrypt_type' => NULL,
'appid' => 'wx0d8a443f204492b9',
'appsecret' => '0984aac40a4a5970becf8c6091b4b404',
'access_token' => 'Aa5uO2Q2z5M8uQs73jPbhoCO1fSrrZXfKrL_ZucQ6xl8l8fZSsF86z1X58FMQqSXncrD8k9Y2gnEpz6d7gN4VlTePjExqMQEizNG5K5BVEYVAFbAHAOTY',
'jsapi_ticket' => NULL,
'api_ticket' => NULL,
'user_token' => NULL,
'partnerid' => NULL,
'partnerkey' => NULL,
'paysignkey' => NULL,
'postxml' => NULL,
'_msg' => NULL,
'_funcflag' => false,
'_receive' =>
array (
'ToUserName' => 'gh_8e1f2cc6e8de',
'FromUserName' => 'op0i1twFO-lMOoLbosEE74zfak1s',
'CreateTime' => '1450267685',
'MsgType' => 'event',
'Event' => 'subscribe',
'EventKey' => 'qrscene_1',
'Ticket' => 'gQF48DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xLzJreTdYYTNsakRMMWFQMGYyR0pqAAIERgFxVgMEgDoJAA==',
),
'_text_filter' => true,
'debug' => false,
'errCode' => 40001,
'errMsg' => 'no access',
'logcallback' => false,
))
