> 백엔드 개발 > PHP 튜토리얼 > 微信公众平台获取openid

微信公众平台获取openid

WBOY
풀어 주다: 2016-06-06 20:28:14
원래의
1564명이 탐색했습니다.

微信公众平台可以通过接口获取用户的openid,但是获取用户信息的时候需要做一次跳转。
我在后台有一张用户表,用户如果关注了公众平台就将他的信息录入到数据库,包括openid。现在要做一个简单的系统,用户参加某些活动可以获得积分,积分可以兑换成金币,所以在页面中需要使用openid来标识每一个用户。
现在的问题是,活动有好几个页面,每个页面都需要用到openid,并且无法限定用户从哪个页面进入,想请问有没有办法将用户openid存储起来,在不同页面之间传递?
ps: session这种方式是不行的,微信浏览器对session的支持有问题,我抓包做过测试

回复内容:

微信公众平台可以通过接口获取用户的openid,但是获取用户信息的时候需要做一次跳转。
我在后台有一张用户表,用户如果关注了公众平台就将他的信息录入到数据库,包括openid。现在要做一个简单的系统,用户参加某些活动可以获得积分,积分可以兑换成金币,所以在页面中需要使用openid来标识每一个用户。
现在的问题是,活动有好几个页面,每个页面都需要用到openid,并且无法限定用户从哪个页面进入,想请问有没有办法将用户openid存储起来,在不同页面之间传递?
ps: session这种方式是不行的,微信浏览器对session的支持有问题,我抓包做过测试

微信对session的支持没有任何问题,session也不是存在微信上面的。真正有问题的是微信对cookie的支持,微信上面保存的所有cookie信息都是临时的,退出微信再重新打开就会导致cookie丢失,自然会导致session失效。

在一次会话内完全可以使用session保存用户的openID,如果是在多个域名之间跳转的话最好是在一个主域名的不同二级域名下,写cookie的时候设置好domain参数就可以;跨主域名的话会比较麻烦,一般也没有必要。

放redis这种缓存里

获取用户信息的时候需要网页授权,网页授权有静默授权(snsapi_base)和用户可感知的授权(snsapi_userinfo)
你只要openid的话用静默授权就可以了

静默授权流程:

用户打开你的页面-》跳转到微信授权页面-》跳转到你设定的页面并能够拿到code-》根据code拿到OpenId

拿到openid之后你可以保存到session,这个是绝对没问题的~

你先做一下检查:

1.确定下否真的拿到了OpenId

2.查看下服务端是否有保存session数据?

3.页面跳转比较多,最后session是保存在哪个域,这个要确定!

可能出现的问题:

因为PHP的session需要客户端的cookies来配合(保存PHPSESSID),如果客户端禁用了cookies,你可以把PHPSESSID放到URL里面进行传递或者写到html的header里面

如果活动人数不是很多,可以使用网页授权的方式去获取OpenId

<code>以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的</code>
로그인 후 복사

无论用户从哪个页面进来,你都可以通过这种方式获取用户的OpenId。如果你需要在用户进入页面之后,将用户的openId在各个页面中传递,我记得PHP有个全局变量_global,各个页面贡献该变量,或者放在redis

不过在java中可以将变量放在ThreadLocal中,这样可以唯一确定是哪个用户,不知道PHP有没有类似的方法。如果多个用户同时进入,你要实现OpenId在各个页面传递,怎么标识唯一的用户

session是没问题的,可能是你哪出错了,还有另一种解决方案是用HTML5的本地存储localstorage,存Cookie也是一种办法

很奇怪你说的最后那句,微信内置浏览器对session支持有问题,那这么多跑在微信里的网站都是怎么工作的。

微信支持session没问题的**

通过一条图文回复,然后url连接里带上OPENID,这样连接到页面就可以了.

来,拿好:https://github.com/thenbsp/wechat/blob/master/example/oauth.php

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿