You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取URL中code参数值并传入Python函数及获取Foursquare access_token

提取URL中code参数并换取Foursquare access_token的实现方案

一、通用提取URL中code参数的方法

要提取URL里的code=xxx参数其实很简单,Python标准库urllib.parse就有现成的工具,比自己写正则靠谱多了,能自动处理各种URL编码的情况。步骤如下:

  • 先用urlparse把URL拆分成各个组成部分(比如查询参数、片段部分等)
  • 再用parse_qs解析查询参数,直接拿到code的值

给你个通用的函数示例:

from urllib.parse import urlparse, parse_qs

def extract_code_from_url(url):
    # 拆分URL的结构
    parsed_url = urlparse(url)
    # 解析查询参数,返回的是字典,每个参数值都是列表(应对可能的重复参数)
    query_params = parse_qs(parsed_url.query)
    # 取出code参数,取第一个值就行(通常code只会出现一次)
    code = query_params.get('code', [None])[0]
    return code

调用这个函数拿到code之后,直接把变量传给你需要的Python函数就搞定了。

二、针对Foursquare的具体实现

你给出的Foursquare返回链接里,末尾的# = 是URL的片段部分,完全不影响查询参数的解析,直接用上面的方法提取code就行。接下来要换取access_token,按照Foursquare的认证流程,需要向他们的token端点发送POST请求,带上code、你的客户端ID、密钥还有重定向URI这些参数。

完整的代码示例给你写好了:

from urllib.parse import urlparse, parse_qs
import requests

def get_foursquare_access_token(auth_url, client_id, client_secret, redirect_uri):
    # 第一步:从认证链接里提取code
    parsed_url = urlparse(auth_url)
    query_params = parse_qs(parsed_url.query)
    code = query_params.get('code', [None])[0]
    
    if not code:
        raise ValueError("哎,这个URL里没找到有效的code参数啊")
    
    # 第二步:向Foursquare请求access_token
    token_url = "https://foursquare.com/oauth2/access_token"
    payload = {
        'client_id': client_id,
        'client_secret': client_secret,
        'grant_type': 'authorization_code',
        'code': code,
        'redirect_uri': redirect_uri
    }
    
    response = requests.post(token_url, data=payload)
    response.raise_for_status()  # 如果请求出错会直接抛出异常,方便排查
    return response.json()

# 调用的时候替换成你自己的信息就行
auth_url = 'http://www.example.net/auth?code=Z0NJ55C4BUX4DIMNCHRSVSIIPBEBD4TGOD45J3IZNVNVAIFZ# = '
your_client_id = "你的Foursquare客户端ID"
your_client_secret = "你的Foursquare客户端密钥"
your_redirect_uri = "你在开发者平台设置的重定向URI"

access_token_result = get_foursquare_access_token(auth_url, your_client_id, your_client_secret, your_redirect_uri)
print("拿到的access_token:", access_token_result.get('access_token'))

记得把代码里的占位符替换成你自己在Foursquare开发者平台创建应用时的实际信息哦。

内容的提问来源于stack exchange,提问作者Biashara Employers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:56:20