微信三方平台授权登录

本文介绍了微信三方平台授权登录的步骤,包括获取授权关键信息、配置IP白名单、理解Token生成过程,并提供了完整的Python授权代码示例。

文章最后有python代码,可以单独运行完成三方平台授权登录

1.获取三方平台授权关键信息

首先,你需要在微信开放平台

管理中心出找到验证票据接收URL、授权发起页面、公众号开放域名等信息,授权时需要你填入下方代码的对应之处。

你也要获取自己三方平台的component_appidcomponent_appsecret

 2.将自己的IP配置进白名单

3.先看一下官方的Token生成说明

在完成了商家授权给第三方平台之后,第三方平台则可以获得authorizer_access_token进行调用相关api,本章节则主要介绍生成 Token 的流程。

步骤说明
1、配置授权事件URL,用于接收component_verify_ticket出于安全考虑,在第三方平台创建审核通过后,微信服务器 每隔 10 分钟会向第三方的消息接收地址推送一次 component_verify_ticket,用于获取第三方平台接口调用凭据。component_verify_ticket有效期为12h
2、获得component_verify_ticket后,按照获取第三方平台 component_access_token 接口文档,调用接口获取component_access_tokencomponent_access_token有效期2h,当遭遇异常没有及时收到component_verify_ticket时,建议以上一次可用的component_verify_ticket继续生成component_access_token。避免出现因为 component_verify_ticket 接收失败而无法更新 component_access_token 的情况。
3、获得component_access_token后,按照获取预授权码 pre_auth_code接口文档 ,调接口获取pre_auth_code用于生成扫码授权二维码或者链接需要的pre_auth_code
4、获得pre_auth_code后,按照授权技术流程说明文档 ,引导用户授权后获取authorization_codeauthorization_code有过期时间,该过期时间在授权后回调 URI进行返回;也会通过推送授权变更通知的方式将authorization_code推送给第三方平台
5、获得authorization_code后,按照使用授权码换取公众号或小程序的接口调用凭据和授权信息 接口文档 ,调接口获取authorizer_refresh_token通过授权码和自己的接口调用凭据(component_access_token),换取公众号或小程序的接口调用凭据(authorizer_access_token 和用于前者快过期时用来刷新它的 authorizer_refresh_token)和授权信息(授权了哪些权限等信息)
6、获得authorizer_refresh_token后,按照获取/刷新授权公众号或小程序的接口调用凭据 接口文档 ,调接口获取authorizer_access_token可通过 authorizer_refresh_token 获取公众号或小程序接口的调用令牌
7、按照接口文档,代替公众号或小程序调用接口在完成授权后,第三方平台可通过公众号或小程序的接口调用凭据(authorizer_access_token)来代替它调用接口,具体请见接口文档

4.python授权

分别执行main1,main2,main3,执行前将数字删除即可。 

代码如下:

# 三方平台
import requests
import json
from selenium import webdriver
import time
if __name__ == '__main1__':
    # 验证票据,三方平台,开发配置,开发资料有
    # ticket@@@okByE6pHPJvF3K52oaYuB50Hr8Wn8CoHM6AlKRCa6FU-_KlDIX8u_hDqhpcpOZKmCvqFgkUhQklj2YdqI_9o6Q

    # componentAppId: "你的componentAppId"
    # componentSecret: "你的componentSecret"

    # ===> 获得component_verify_ticket后,按照获取第三方平台 component_access_token 接口文档,调用接口获取component_access_token
    api_component_token = {
        "component_appid": "你的componentAppId",
        "component_appsecret": "你的componentSecret",
        "component_verify_ticket": "ticket@@@okByE6pHPJvF3K52oaYuB50Hr8Wn8CoHM6AlKRCa6FU-_KlDIX8u_hDqhpcpOZKmCvqFgkUhQklj2YdqI_9o6Q"
    }

    api_component_token_result = json.loads(requests.post('https://api.weixin.qq.com/cgi-bin/component/api_component_token', json=api_component_token).content.decode())

    # {"component_access_token":"59_aEFZHbDMBfDShRUf4VHLdO5jwFUgbbC59JuhvB_qYEzxWNzCmLuNauoo5BMRA_OvGIjjlbogf2rgcRFPLheQQjEvIuymUaOG_jPOmHgm-06lNzSnbgASqKys7KuyuLXUY4kGQcs9mQfhFbb9EGSgAHAPRD","expires_in":7200}
    # ===> 获得component_access_token后,按照获取预授权码 pre_auth_code接口文档 ,调接口获取pre_auth_code
    COMPONENT_ACCESS_TOKEN = api_component_token_result["component_access_token"] if api_component_token_result["component_access_token"] else '59_h5hSvv1mMYqt_nKcVB56nOSc2LfP9-zij13Fx5EnyXRqCDTXpp7HI32tCaBk5_1b-lX3ov2JEu3yB8RSUxZr707Q1r4rcV4TXDfujMJEsmspEwvCIamWK6RnqH1CpkJa0LGfloD0f8PPyhs4IULeAEAVHY'
    print(COMPONENT_ACCESS_TOKEN)
    api_create_preauthcode_result = json.loads(requests.post('https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=%s' % COMPONENT_ACCESS_TOKEN, json={
        "component_appid": "你的componentAppId"
    }).content.decode())
    # {"pre_auth_code":"preauthcode@@@cE0qI3US59kHau1cMtAbsw059w-CyNTP2etBsH2nIe4FgyCo351tFsGw7IDC1Ip33HMOec5HpjJTscRF46CJRw","expires_in":1800}
    # ===> 获得pre_auth_code后,引导用户授权后获取authorization_code,redirect_uri 一定是公众号开发域名

    url = 'https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=你的componentAppId&pre_auth_code=%s&redirect_uri=公众号开发域名' % api_create_preauthcode_result['pre_auth_code']


    options = webdriver.ChromeOptions()

    options.add_argument(
        'user-agent="Mozilla/5.0 (Linux; Android 5.1.1; nxt-al10 Build/LYZ28N) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 sinablog-android/5.3.2 (Android 5.1.1; zh_CN; huawei nxt-al10/nxt-al10)"')


    browser = webdriver.Chrome(chrome_options=options)
    browser.get("授权发起网址")
    time.sleep(2)
    script = r"window.open('%s', '_self')" % url
    browser.execute_script(script)

    time.sleep(60)


if __name__ == '__main2__':
    # 获得authorization_code后,按照使用授权码换取公众号或小程序的接口调用凭据和授权信息 接口文档 ,调接口获取authorizer_refresh_token
    auth_code = 'queryauthcode@@@yZuXzcuRvHhuUCPAg-sfZ1PSEMvIj0kGc0jmHPbqveQR8dhiMFS6Jiny9sYH7XxF4D6nzEdzXq7R9u_X_t9B_A'
    COMPONENT_ACCESS_TOKEN = '59_HfRF9Ebc9Y-QYXO2iEXcjrYstu5arZ-Eava5SHUJC6lMR4KLcvUm7q1-wNc3HzosyxJ3uttSrw66m4AkA91UNi40O0K9JT7i7Cs3hbboIrY0wwYHXw3qDmYQUpTC3ta3ThkEzjTtL0GFR_oSXWFgACADCL'
    api_query_auth_result = json.loads(requests.post('https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=%s' % COMPONENT_ACCESS_TOKEN, json={
        "component_appid": "你的componentAppId",
        "authorization_code": auth_code
    }).content.decode())
    print(api_query_auth_result)
    #{'authorization_info': {'authorizer_appid': 'wx612d33e840982339', 'authorizer_access_token': '59_WQ1mI8BR2qwSJGee3sp_1hHN5Cn62MDh_IYCazKDQvKHwWbWG2Pe-eoYmZhq4F4xjjzYtAtAKn_B3-hAbxEwRqYaeMFd24l682zMQQrmLU2BCUVccApP-BDAsqF8Zs11GeVufwBg1qp5qLmiVATcAGDNSL', 'expires_in': 7200, 'authorizer_refresh_token': 'refreshtoken@@@CaOsWYhyGWF_jkSkc-hMBesXD0d6dXtnBAkmBMYRepQ', 'func_info': [{'funcscope_category': {'id': 1}, 'confirm_info': {'need_confirm': 1, 'already_confirm': 0, 'can_confirm': 1}}, {'funcscope_category': {'id': 2}, 'confirm_info': {'need_confirm': 1, 'already_confirm': 0, 'can_confirm': 1}}, {'funcscope_category': {'id': 3}, 'confirm_info': {'need_confirm': 0, 'already_confirm': 0, 'can_confirm': 0}}, {'funcscope_category': {'id': 4}}, {'funcscope_category': {'id': 6}}, {'funcscope_category': {'id': 7}}, {'funcscope_category': {'id': 11}, 'confirm_info': {'need_confirm': 1, 'already_confirm': 0, 'can_confirm': 1}}, {'funcscope_category': {'id': 15}}, {'funcscope_category': {'id': 24}, 'confirm_info': {'need_confirm': 0, 'already_confirm': 0, 'can_confirm': 0}}, {'funcscope_category': {'id': 33}, 'confirm_info': {'need_confirm': 0, 'already_confirm': 0, 'can_confirm': 0}}, {'funcscope_category': {'id': 89}}]}}



if __name__ == '__main3__':
	# 获取自定义菜单
    url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token=%s' % '59_WQ1mI8BR2qwSJGee3sp_1hHN5Cn62MDh_IYCazKDQvKHwWbWG2Pe-eoYmZhq4F4xjjzYtAtAKn_B3-hAbxEwRqYaeMFd24l682zMQQrmLU2BCUVccApP-BDAsqF8Zs11GeVufwBg1qp5qLmiVATcAGDNSL'
    print(json.loads(requests.get(url).content.decode()))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eq0284

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值