Python 버 전 은 위 챗 공중 번호 스 캔 로그 인 을 실현 합 니 다.

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
      }
파 이 썬 버 전의 위 챗 공식 번호 스 캔 로그 인 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 공식 번호 스 캔 로그 인 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기