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

获取Tinder API认证令牌遇问题:接口404及TypeError错误求助

如何解决Tinder API令牌获取时的404错误与TypeError?

我正在开发一款基于DialogFlow的AI机器人,用于与Tinder匹配对象进行智能对话,相关脚本归属tinderbot仓库。目前尝试获取认证令牌以对接机器人,但运行脚本并输入手机验证码后出现错误,且脚本顶部的API链接均返回404。

原脚本代码:

import json
import requests

CODE_REQUEST_URL = "https://api.gotinder.com/v2/auth/sms/send?auth_type=sms"
CODE_VALIDATE_URL = "https://api.gotinder.com/v2/auth/sms/validate?auth_type=sms"
TOKEN_URL = "https://api.gotinder.com/v2/auth/login/sms"

HEADERS = {'user-agent': 'Tinder/11.4.0 (iPhone; iOS 12.4.1; Scale/2.00)', 'content-type': 'application/json'}

def send_otp_code(phone_number):
    data = {'phone_number': phone_number}
    r = requests.post(CODE_REQUEST_URL, headers=HEADERS, data=json.dumps(data), verify=False)
    print(r.url)
    response = r.json()
    if(response.get("data")['sms_sent'] == False):
        return False
    else:
        return True

def get_refresh_token(otp_code, phone_number):
    data = {'otp_code': otp_code, 'phone_number': phone_number}
    r = requests.post(CODE_VALIDATE_URL, headers=HEADERS, data=json.dumps(data), verify=False)
    print(r.url)
    response = r.json()
    if(response.get("data")["validated"] == False):
        return False
    else:
        return response.get("data")["refresh_token"]
    
def get_api_token(refresh_token):
    data = {'refresh_token': refresh_token }
    r = requests.post(TOKEN_URL, headers=HEADERS, data=json.dumps(data), verify=False)
    print(r.url)
    response = r.json()
    return response.get("data")["api_token"]

phone_number = input("Please enter your phone number under the international format (country code + number): ")
log_code = send_otp_code(phone_number)
otp_code = input("Please enter the code you've received by sms: ")
refresh_token = get_refresh_token(otp_code, phone_number)
print("Here is your Tinder token: " + str(get_api_token(refresh_token)))

运行后报错:

File "c:\Users\MIS-l\OneDrive\Desktop\tinderbot-master\phone_auth_token.py", line 44, in <module>
    print("Here is your Tinder token: " + get_api_token(refresh_token))
                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "c:\Users\MIS-l\OneDrive\Desktop\tinderbot-master\phone_auth_token.py", line 37, in get_api_token
    return response.get("data")["api_token"]
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable

解决方案

1. 更新API端点

Tinder已废弃v2版本的认证接口,需替换为v3端点:

  • 发送OTP:https://api.gotinder.com/v3/auth/sms/send?auth_type=sms
  • 验证OTP:https://api.gotinder.com/v3/auth/sms/validate?auth_type=sms
  • 获取令牌:https://api.gotinder.com/v3/auth/login/sms

2. 增加响应空值判断

原代码未处理API返回无data字段的情况,需在每个函数中添加空值检查,避免TypeError。

3. 更新User-Agent

使用较新版本的Tinder客户端UA,降低被服务器拦截的概率。


修改后的完整代码

import json
import requests

# 替换为v3 API端点
CODE_REQUEST_URL = "https://api.gotinder.com/v3/auth/sms/send?auth_type=sms"
CODE_VALIDATE_URL = "https://api.gotinder.com/v3/auth/sms/validate?auth_type=sms"
TOKEN_URL = "https://api.gotinder.com/v3/auth/login/sms"

# 更新为近期的User-Agent
HEADERS = {
    'user-agent': 'Tinder/13.10.0 (iPhone; iOS 16.5; Scale/3.00)',
    'content-type': 'application/json'
}

def send_otp_code(phone_number):
    data = {'phone_number': phone_number}
    try:
        r = requests.post(CODE_REQUEST_URL, headers=HEADERS, data=json.dumps(data), verify=False)
        r.raise_for_status()  # 捕获HTTP错误
        response = r.json()
        data = response.get("data")
        if not data or data.get('sms_sent') is False:
            return False
        return True
    except Exception as e:
        print(f"发送OTP失败: {str(e)}")
        return False

def get_refresh_token(otp_code, phone_number):
    data = {'otp_code': otp_code, 'phone_number': phone_number}
    try:
        r = requests.post(CODE_VALIDATE_URL, headers=HEADERS, data=json.dumps(data), verify=False)
        r.raise_for_status()
        response = r.json()
        data = response.get("data")
        if not data or data.get("validated") is False:
            return False
        return data.get("refresh_token")
    except Exception as e:
        print(f"验证OTP失败: {str(e)}")
        return False
    
def get_api_token(refresh_token):
    if not refresh_token:
        print("无效的refresh_token")
        return None
    data = {'refresh_token': refresh_token }
    try:
        r = requests.post(TOKEN_URL, headers=HEADERS, data=json.dumps(data), verify=False)
        r.raise_for_status()
        response = r.json()
        data = response.get("data")
        if not data:
            print("API响应无data字段")
            return None
        return data.get("api_token")
    except Exception as e:
        print(f"获取API令牌失败: {str(e)}")
        return None

phone_number = input("请输入国际格式手机号(国家代码+号码): ")
otp_sent = send_otp_code(phone_number)
if not otp_sent:
    print("发送验证码失败,请检查手机号或网络")
    exit()
otp_code = input("请输入收到的短信验证码: ")
refresh_token = get_refresh_token(otp_code, phone_number)
if not refresh_token:
    print("验证码验证失败")
    exit()
api_token = get_api_token(refresh_token)
if api_token:
    print(f"你的Tinder令牌: {api_token}")
else:
    print("获取令牌失败")

错误原因说明

  • 404错误:原脚本使用的v2 API端点已被Tinder移除,服务器无法找到对应资源。
  • TypeError:API返回404时,响应内容不含data字段,response.get("data")返回None,尝试对None做下标操作就会触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:21:35