使用TSC将Tableau OAuth连接转为用户名密码认证失败求助
解决Tableau Server Client切换Snowflake连接认证类型的问题
当尝试用TSC将Snowflake连接从OAuth切换为用户名密码认证时,直接修改现有连接属性会触发404020: Resource Not Found错误,这是因为Tableau API不允许直接修改连接的核心认证类型,必须通过删除旧连接、添加新连接的方式实现切换,具体操作如下:
操作步骤及代码示例
获取目标工作簿并加载现有连接
首先检索目标工作簿,并填充其关联的连接信息:import tableauserverclient as TSC # 假设已完成Server认证(例如server.auth.sign_in(username, password)) wb = server.workbooks.get_by_id('yyyyyyy-yyyyy-yyyy-yyyyy-yyyyyyy') server.workbooks.populate_connections(wb)删除原有OAuth连接
找到需要替换的OAuth连接并删除:old_conn = wb.connections[0] server.workbooks.delete_connection(wb, old_conn)创建新的用户名密码认证连接
构建新的Snowflake连接对象,显式指定认证类型为用户名密码,并填写必要的连接参数:new_conn = TSC.ConnectionItem() # Snowflake账户地址,格式为<account_identifier>.snowflakecomputing.com new_conn.server_address = 'your-snowflake-account.snowflakecomputing.com' new_conn.connection_type = 'snowflake' # 认证相关配置 new_conn.username = 'TABLEAU_USER' new_conn.password = 'tb_pass' new_conn.embed_password = True new_conn.authentication_type = 'username_password' # 关键:指定认证类型 # Snowflake连接参数(需与原有连接一致) new_conn.dbname = 'your-database-name' new_conn.schema = 'your-schema-name' new_conn.warehouse = 'your-warehouse-name'将新连接添加到工作簿
把新创建的连接关联到目标工作簿:server.workbooks.add_connection(wb, new_conn)
关键说明
- 必须删除原有OAuth连接:Tableau API不支持直接修改连接的核心认证类型,直接修改现有连接属性会导致API无法识别该资源,触发404错误。
- 显式指定
authentication_type:通过设置该参数为username_password,明确告知API使用用户名密码认证方式,替代原有的OAuth配置。 - 保持其他连接参数一致:新连接的数据库、模式、仓库等参数需与原有OAuth连接一致,避免工作簿出现数据源连接异常。
内容的提问来源于stack exchange,提问作者Ezer K
相关产品推荐
相关产品推荐

