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

Telegram Bot对接Excel遇问题:用户名验证失败及MS Graph令牌为空

Telegram Bot 连接Excel(MS Graph API)问题排查

我正在开发一款Telegram Bot,功能是接收用户输入并将详情更新至Excel文件。已通过Azure门户及MS Graph API完成Excel文件连接,此前遇到的Access Token获取问题,通过在Azure门户创建新客户端密钥解决,且单独测试获取Access Token的代码能成功返回令牌,但仍存在以下问题:

  • 无法验证用户名,提示获取Excel数据失败;
  • 调用MS Graph接口时返回400错误,响应信息显示"Access token is empty";
  • 不确定是否需要手动为空Excel文件添加用户名表头才能完成写入操作。

保存用户名及验证逻辑代码

def save_username(update: Update, context: CallbackContext) -> int:
    username = update.message.text
    if username.lower() == 'back':
        return start(update, context)  # 返回起始步骤
    context.user_data['username'] = username

# 检查用户名是否已存在于Excel
    data = read_excel()
    if data and 'values' in data:
        usernames = [row[1] for row in data['values']]  # 假设用户名在第二列
    if username in usernames:
        update.message.reply_text(
                    '用户名已存在,请尝试其他用户名。'
                )
    return SAVE_USERNAME
    else:
# 用户名不存在,进入下一步
    reply_keyboard = [['返回']]
    update.message.reply_text('请输入你的邮箱:',
                              reply_markup=ReplyKeyboardMarkup(
                              reply_keyboard,
                              one_time_keyboard=True))
                return SAVE_EMAIL
        else:
            logger.error(
                "获取Excel数据失败,无法验证用户名。")
            update.message.reply_text(
                '数据获取错误,请稍后重试。')
            return ConversationHandler.END

Access Token获取测试代码

import msal

from hi.py import TENANT_ID, CLIENT_ID, CLIENT_SECRET


def get_access_token():
    authority = f"https://login.microsoftonline.com/{TENANT_ID}"
    app = msal.ConfidentialClientApplication(
        CLIENT_ID,
        authority=authority,
        client_credential=CLIENT_SECRET
    )
    result = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])

    if "access_token" in result:
        print("Access token 获取成功")
        return result['access_token']
    else:
        print(f"获取Access token失败: {result.get('error')}")
        if "error_description" in result:
            print(f"错误描述: {result['error_description']}")
        if "correlation_id" in result:
            print(f"关联ID: {result['correlation_id']}")
        return None

if __name__ == "__main__":
    get_access_token()

近期错误日志

调用MS Graph接口返回400错误:

__main__ - ERROR - Error fetching data: 400 Client Error: Bad Request for url: https://graph.microsoft.com/v1.0/me/drive/items/61814971F1322FC0!1070/workbook/worksheets/Sheet1/range(address='A1:F1000')

接口响应信息:

{"error":{"code":"InvalidAuthenticationToken","message":"Access token is empty.","innerError":{"date":"2024-07-16T09:32:26","request-id":"36c2f98e-6ebd-445a-9b2f-7a103b1be037","client-request-id":"36c2f98e-6ebd-445a-9b2f-7a103b1be037"}}}

单独运行Access Token获取代码时,输出显示令牌获取成功:

python ./access_token.py
2024-07-16 09:30:23,127 - msal.authority - INFO - Initializing with Entra authority: https://login.microsoftonline.com/ed586964-ec89-4ecb-95bf-df20fb9axxxx
Access token acquired successfully

内容的提问来源于stack exchange,提问作者Aman Prakash Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:14:57