Python 버 전 은 위 챗 공중 번호 스 캔 로그 인 을 실현 합 니 다.
공공 번호 서 비 스 를 신청 하고 관련 정 보 를 설정 하 며 관련 플랫폼 에서 설정 하 는 것 이 이렇게 많은 것 입 니 다.
논 리 를 실현 하고 임시 임시 임시 QR 코드 를 사용 하 며 파 라 메 터 를 가 진 QR 코드 스 캔 으로 로그 인 합 니 다.
프로 세 스,사용 자 는 이미 스 캔 관심 을 가지 고 로그 인 페이지 에서 직접 스 캔 하여 로그 인 합 니 다.
사용자 가 관심 이 없 으 면 관심 을 클릭 한 후 바로 로그 인 해 야 합 니 다.
저 희 는 매개 변수 가 있 는 장면 값 을 사용 하여 어떤 사용자 가 스 캔 로그 인 을 하 는 지 구별 합 니 다.
필드 값 사용 자 는 사용자 정의 할 수 있 지만 유일한 시간 스탬프 여야 합 니 다.
제 가 지금 하려 는 기능 은 계 정 바 인 딩 수요 가 있 고 앞 뒤 가 분 리 된 상황 에서
흐름
사용자 가 이미 관심 을 가지 고 계 정 을 연결 하면 바로 코드 를 스 캔 하여 로그 인 합 니 다.
사용자 가 이미 관심 을 가지 고,귀속 되 지 않 았 을 때,코드 를 스 캔 한 후,귀속 핸드폰 번호 페이지 로 이동 하여,귀속 후,로그 인 을 진행,
사용자 가 관심 을 취소 하면 묶 기 를 해제 하고 코드 를 스 캔 한 후에 다시 바 인 딩 페이지 에 가서 스 캔 로그 인 을 하 는 것 과 같 습 니 다.물론 바 인 딩 된 핸드폰 번호 에 대해 놀 라 서 판단 해 야 합 니 다.
코드 는 다음 과 같다.
인터페이스 1 매개 변수의 장면 값 생 성 QR 코드
def get_wxcode(request):
"""
:
:
{
"formError": {},
"delta_time": 951,
"errorCode": 0,
"params": {
"scene_id": "512"
},
"message": "",
"data": {
"url": "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEi8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyUFNnZ2RNRlU5Y1QxWkJqZDF1Y1QAAgTlmMReAwSAOgkA",
"sceneid": "2500", # ,
"type": "get"
}
}
"""
try:
scene_id = str(int((time.time())))
access_token = get_access_token()
if access_token:
user_info_url = u'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=' + access_token
params = {
'expire_seconds': 604800,
'action_name': 'QR_STR_SCENE',
'action_info': {"scene": {"scene_str": scene_id}},
}
params = json.dumps(params)
userinfo = requests.post(user_info_url, data=params).json()
ticket = userinfo['ticket']
# except:
# raise FieldError("ticket", "ticket ")
data = {
"type": 'get',
'url': 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' + ticket,
'sceneid':scene_id
}
return data
else:
raise FieldError(" ", " , , ")
except:
raise FieldError(" ", " , , ")
인터페이스 반환 url 과 sceneid URL 은 바로 QR 코드 입 니 다.전단 은 직접 보 여 드릴 수 있 습 니 다.sceneid 는 전단 으로 돌아 가 전단 을 저장 하여 사용자 가 코드 를 스 캔 하 는 지 여 부 를 판단 합 니 다.위 챗 서 비 스 는 현재 sessionid 캐 시 를 지원 하지 않 기 때문에 저희 가 자체 캐 시 를 해 야 합 니 다.제 가 사용 하 는 장면 값 을 redis 에 저장 합 니 다.2.전단 에 2 차원 을 보 여 준 후에 사용자 가 코드 를 스 캔 하기 시 작 했 습 니 다.관심 을 클릭 한 후에 위 챗 서 비 스 는 사용자 의 정보 에 대해 위 챗 대중 이 작성 한 서버 주 소 를 되 돌려 주 었 습 니 다.예 를 들 어 그림 과 같 습 니 다.
이제 주 소 를 되 돌려 주 는 코드 를 쓰기 시작 합 니 다.
위 챗 관심,유형 은 이벤트 로 보 내 고 구체 적 인 유형 은 문 서 를 봅 니 다.
1.위 챗 통신 인증 을 먼저 통 하 는 것 은 get 요청 입 니 다.
사용자 정 보 를 가 져 오 는 것 은 post 요청 입 니 다.
이벤트
우 리 는 accesstoken 은 사용자 정 보 를 가 져 와 사용자 정 보 를 저장 하고 장면 값 eventkey 를 Redis 에 저장 합 니 다.제 가 설정 한 만 료 시간 은 1 시간 입 니 다.
이 위 챗 리 셋 이 끝 났 습 니 다.3 인터페이스 2 는 사용자 가 스 캔 을 할 지 여 부 를 판단 하기 시 작 했 습 니 다.우 리 는 전단 에서 백 엔 드 에 장면 값 을 전달 해 야 합 니 다.우 리 는 redis 의 장면 값 을 통 해 데 이 터 를 저장 하 는 사용자 정 보 를 얻 을 수 있 습 니 다.만약 에 이미 저장 되 었 다 면 사용자 가 스 캔 에 성공 하고 직접 로그 인 해 야 합 니 다.사용자 의 openid 는 유일한 것 입 니 다.
사용자 정 보 를 얻 으 면 사용 자 는 스 캔 을 하지 않 습 니 다.이 상태 인 터 페 이 스 는 문의 하 는 방식 으로 볼 수 있 습 니 다.5s 로 한 번 진행 할 수 있 습 니 다.
def get_public_wx_status(request):
'''
scene_id
,
:param request:
:return:
{
"formError": {},
"delta_time": 713,
"errorCode": 0,
"params": {},
"message": "",
"data": {
"focus_state": 1, # 1 0
"state": 0 # , 0 1 ,
}
}
'''
post_info = request.POST
scene_id = post_info.get("scene_id", '')
if not scene_id:
raise FieldError('scene_id','scene_id ')
openid = redis_conn.get(scene_id)
if openid == None:
return {'focus_state': 0}
else:
uid = redis_conn.get(str(openid))
if uid == None:
return {'focus_state':0}
else:
user = UserWxInfo.objects.get(openid=openid)
if user.focus_state == 1:
state = 1
_ = User.objects.get(uid=user.uid)
request.apisession["uid"] = user.uid
request.apisession["pwd_updatetime"] = _.pwd_updatetime
ip = ''
if request.META.has_key('HTTP_X_FORWARD_FOR'):
ip = request.META['HTTP_X_FORWARD_FOR']
else:
ip = request.META['REMOTE_ADDR']
UserLoginLog(uid=user.uid, ip=ip).save()
else:
state = 0
return {
'focus_state':1,
'state':state
}
파 이 썬 버 전의 위 챗 공식 번호 스 캔 로그 인 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 공식 번호 스 캔 로그 인 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.