使用 Python-oauth2 在 python 中为 tumblr API 初始化 Oauth 客户端

2024-03-14

我是 Oauth 的新手。过去,对于用 Python 编写的 Twitter 应用程序,我使用 python-oauth2 库来初始化客户端,如下所示:

consumer = oauth.Consumer(key = CONSUMER_KEY, secret = CONSUMER_SECRET)
token = oauth.Token(key = ACCESS_KEY, secret = ACCESS_SECRET)
client = oauth.Client(consumer, token)

这很容易,因为 Twitter 提供了 CONSUMER 和 ACCESS 密钥和秘密。但现在我需要对 tumblr 做同样的事情。问题是 tumblr 只提供 CONSUMER_KEY、CONSUMER_SECRET 和这些 url:

Request-token URL   http://www.tumblr.com/oauth/request_token
Authorize URL       http://www.tumblr.com/oauth/authorize
Access-token URL    http://www.tumblr.com/oauth/access_token

使用这些数据我如何初始化客户端来访问 tumblr API?

UPD

jterrace 建议了我之前尝试使用的代码。问题在于oauth_callback。如果我没有指定任何内容,api 会返回错误“未指定 oauth_callback”,但如果我指定了一些 url,如“http://example.com/oauthcb/”并点击链接http://www.tumblr.com/oauth/authorize?oauth_token=9ygTF http://www.tumblr.com/oauth/authorize?oauth_token=9ygTF...,然后按“允许”按钮,tumblr 不会显示任何 PIN 代码页面,它会立即重定向到该回调 url,这是无用的,因为它是桌面应用程序。为什么不显示 PIN 码?

UPD 2

Tumblr API 不支持 PIN 码授权。使用 xAuth 代替 -


首先,导入oauth2模块 https://github.com/simplegeo/python-oauth2并设置服务的 URL 和消费者信息:

import oauth2

REQUEST_TOKEN_URL = 'http://www.tumblr.com/oauth/request_token'
AUTHORIZATION_URL = 'http://www.tumblr.com/oauth/authorize'
ACCESS_TOKEN_URL = 'http://www.tumblr.com/oauth/access_token'
CONSUMER_KEY = 'your_consumer_key'
CONSUMER_SECRET = 'your_consumer_secret'

consumer = oauth2.Consumer(CONSUMER_KEY, CONSUMER_SECRET)
client = oauth2.Client(consumer)

步骤 1:获取请求令牌。这是一个临时令牌,用于 让用户授权访问令牌并签署请求以获取 说访问令牌。

resp, content = client.request(REQUEST_TOKEN_URL, "GET")

request_token = dict(urlparse.parse_qsl(content))
print "Request Token:"
print "    - oauth_token        = %s" % request_token['oauth_token']
print "    - oauth_token_secret = %s" % request_token['oauth_token_secret']

第 2 步:重定向至提供商。由于这是一个 CLI 脚本,我们不 重定向。在 Web 应用程序中,您会将用户重定向到 URL 以下。

print "Go to the following link in your browser:"
print "%s?oauth_token=%s" % (AUTHORIZATION_URL, request_token['oauth_token'])

# After the user has granted access to you, the consumer, the provider will
# redirect you to whatever URL you have told them to redirect to. You can 
# usually define this in the oauth_callback argument as well.
oauth_verifier = raw_input('What is the PIN? ')

Step 3:一旦消费者将用户重定向回 oauth_callback 您可以请求用户已批准的访问令牌的 URL。您使用 请求令牌来签署此请求。完成此操作后,您扔掉 请求令牌并使用返回的访问令牌。你应该存储这个 访问令牌在安全的地方,例如数据库,以供将来使用。

token = oauth2.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
token.set_verifier(oauth_verifier)
client = oauth2.Client(consumer, token)

resp, content = client.request(ACCESS_TOKEN_URL, "POST")
access_token = dict(urlparse.parse_qsl(content))

print "Access Token:"
print "    - oauth_token        = %s" % access_token['oauth_token']
print "    - oauth_token_secret = %s" % access_token['oauth_token_secret']
print

现在您有了访问令牌,您可以用它调用受保护的方法。

EDIT:事实证明,tumblr 不支持 PIN 授权方法。相关帖子.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python-oauth2 在 python 中为 tumblr API 初始化 Oauth 客户端 的相关文章

  • Lighttpd 和 cgi python

    我正在尝试通过 lighttpd 执行一些 python 脚本 但是当我尝试运行它时 我只得到一个要求我下载的空白文件 lighttpd conf server modules mod access mod alias mod access
  • 是否有解决方法可以通过 CoinGecko API 安全检查?

    我在工作中运行我的代码 一切都很顺利 但在不同的网络 家庭 WiFi 上 我不断收到403访问时出错CoinGecko V3 API https www coingecko com api documentations v3 可以观察到 在
  • 将html数据解析成python列表进行操作

    我正在尝试读取 html 网站并提取其数据 例如 我想查看公司过去 5 年的 EPS 每股收益 基本上 我可以读入它 并且可以使用 BeautifulSoup 或 html2text 创建一个巨大的文本块 然后我想搜索该文件 我一直在使用
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 您可以格式化 pandas 整数以进行显示,例如浮点数的“pd.options.display.float_format”?

    我见过this https stackoverflow com questions 18404946 py pandas formatdataframe and this https stackoverflow com questions
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • Python,将函数的输出重定向到文件中

    我正在尝试将函数的输出存储到Python中的文件中 我想做的是这样的 def test print This is a Test file open Log a file write test file close 但是当我这样做时 我收到
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • 如何通过 TLS 1.2 运行 django runserver

    我正在本地 Mac OS X 机器上测试 Stripe 订单 我正在实现这段代码 stripe api key settings STRIPE SECRET order stripe Order create currency usd em
  • 如何使用原始 SQL 查询实现搜索功能

    我正在创建一个由 CS50 的网络系列指导的应用程序 这要求我仅使用原始 SQL 查询而不是 ORM 我正在尝试创建一个搜索功能 用户可以在其中查找存储在数据库中的书籍列表 我希望他们能够查询 书籍 表中的 ISBN 标题 作者列 目前 它
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是

随机推荐

  • 每次运行后,Xcode 6 都会在 iOS8 模拟器中不断重命名我的应用程序目录。

    我正在运行 Xcode 6 Beta 5 但自从第一个 Beta 版以来这种情况就一直发生 每次运行后 我的应用程序在模拟器中的目录都会被重命名 我花了一段时间才弄清楚这一点 我用它来获取文档的目录引用 NSString folder NS
  • 当我尝试卸载包含 NSSM 服务的软件时,失败

    对于以下安装程序包 我有服务XXXService当我安装我的包时 成功安装并运行 但卸载失败并出现错误并恢复 我怀疑该服务仍在运行 阻止删除main exe file 请帮助完成卸载工作 重现此错误的完整最小源是可用的 https gith
  • 将 R 与 php 连接

    我正在尝试以 php localhost 方式运行 R 代码 所以我按照这个例子 https www r bloggers com integrating php and r https www r bloggers com integra
  • GGPlot2 中的 NLS 回归,绘制 y=Ax^b 趋势线误差

    我正在尝试在一组 3 个数据点上拟合基本幂趋势线 就像您在 Excel 中模拟 y Ax b 函数一样 我有一个非常简单的数据集加载到 LCurve data 中 如下所示 MDPT 4 10 9 51 6 曲线下面积 287069 4 2
  • Matlab 中的分组箱线图:通用函数

    在看到 SO 中这篇很棒的文章后 matlab绘制分组箱线图最有效的方法 https stackoverflow com questions 15971478 most efficient way of drawing grouped bo
  • 更改 bootstrap vue 选项卡标题的标题颜色

    I m using bootstrap vue js to create a tab The result is like this 我只想更改选项卡标题颜色 因为它使用我项目中的默认颜色 并来自 bootstrap vue js 官方链接
  • 提交时避免 PHP 中的竞争条件:请不要多次单击“提交”!

    不久前 在线应用程序曾经说过 不要多次点击提交 现在已经消失了 对吧 例如 在 PHP 中如何防范这种情况 我使用的一个解决方案是在会话中放置一个变量 这样您就不能每 10 秒多次提交到一个页面 这样数据库工作就完成了 因此可以进行正常检查
  • Automapper 地图自定义集合

    Hello 我有一个看起来像这样的列表 public class PagedList
  • 在 PHP 和 JavaScript 之间共享常量 [重复]

    这个问题在这里已经有答案了 可能的重复 将 PHP 字符串传递给 Javascript 变量 并转义换行符 https stackoverflow com questions 168214 pass a php string to a ja
  • 确保立即选择 iframe

    这可能是一个愚蠢的问题 但是当我使用 iframe 时 如果您单击该框架 则可以使用特定方面 由 iframe 使用的 html 文件中的事件侦听器控制 如果您在 iframe 外部单击 则会失去对这些控件和事件侦听器的访问权限 有没有办法
  • PHP 重写 url 并保留发布的数据

    我有一个 php 服务器 我想重写传入的 url 由于传入请求是发布请求 我还希望发布的数据在新的网址上传输 我已经成功地使用以下重写规则重定向网址 RewriteRule test http localhost index php dat
  • Android:将 RGB888 转换为 Y800

    我正在从 vuforia 获取作为 RGB888 bytes 捕获的图像 我想将其传递给 zbar 它期望格式为 Y800 我怎样才能做到这一点 i tried Image barcode new Image width height RG
  • useReducer 的initialState 类型为never?

    初始状态有错误 类型为 email string 的参数密码 字符串 有效 布尔值 不可分配给 never 类型的参数 ts 2345 function reducer state IState action IFluxAction con
  • 将 Selenium WebDriver 与 Tor 结合使用

    因为 Tor Browser Bundle 只是 Firefox 的补丁版本 所以似乎应该可以使用FirefoxDriver使用 Tor 浏览器 这是我到目前为止所尝试过的 String torPath C Users My User De
  • 类路径中的 Groovy 资源未加载

    今天是个好日子 我正在使用 spock 框架在我的 groovy 项目 IDE Intellij Idea 12 6 中进行测试 我的 spock 规范类将文件名传递给 groovy 对象进行处理 该文件肯定位于类路径中 但是当我尝试以这种
  • 如何用Java编写全屏模式?

    我希望我的应用程序具有全屏模式 最简单的方法是什么 我是否需要第三方库来实现此目的 或者 JDK 中是否已经提供了此功能 Try the 全屏独占模式API http java sun com docs books tutorial ext
  • 即使我在组件中添加了提供程序,角度 2 中也没有响应提供程序?

    错误 这是我收到的错误 即使我已将提供程序添加到我的组件中 我无法获取我的错误是什么 这是我的所有文件 应用程序组件 ts 应用程序组件 html carservice ts 我无法解决 EXCEPTION Error in 0 0 ORI
  • 在批次之间传递 LSTM 状态的最佳方式

    我正在尝试找到在批次之间传递 LSTM 状态的最佳方法 我已经搜索了所有内容 但找不到当前实施的解决方案 想象一下我有类似的东西 cells rnn LSTMCell size for size in 256 256 cells rnn M
  • 在 Linux C 控制台应用程序中模拟按键

    有没有办法用C语言在Linux中模拟按键 在我的具体情况下 我使用的是 Ubuntu 9 04 需要一个简单的应用程序 在启动时调用 暂停 按钮 这将使 Firefox 中的 iframe 使用 Javascript 进行刷新 我假设你的意
  • 使用 Python-oauth2 在 python 中为 tumblr API 初始化 Oauth 客户端

    我是 Oauth 的新手 过去 对于用 Python 编写的 Twitter 应用程序 我使用 python oauth2 库来初始化客户端 如下所示 consumer oauth Consumer key CONSUMER KEY sec