使用OAuth for tumb完全授权本地应用程序

2024-09-28 01:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个只在本地运行并且与tumblrapi交互的程序,包括需要OAuth的部分。你知道吗

我想让用户通过打开一个带有tumblr授权页的webbrowser(使用pythonswebbrowser-包)来授权我的应用程序。问题是,validation-key是OAuth进程中的一个关键部分,我需要在我的应用程序中访问它,它在URL中作为一个参数传递,用户在授予我的应用程序访问权限后被重定向到该URL。你知道吗

当然,在我的应用程序中,我没有访问webbrowser中的url的权限,所以我的问题是:有没有其他方法可以授予我的应用程序访问权限,或者我是否必须运行一个webserver,以便临时存储我的验证密钥,然后将其传递给我的应用程序?可能使用iframe将站点嵌入存储在硬盘上的站点?我不是网络开发者,我不知道。你知道吗

我看到了thisthis的答案,这两个答案都建议将回调url(=重定向url)设为“localhost/whatever”,这样用户就可以复制它的url并将其插入到应用程序中。我想知道有没有别的解决办法?你知道吗


Tags: 答案用户程序应用程序url权限站点tumblr
1条回答
网友
1楼 · 发布于 2024-09-28 01:30:06

一种选择,更糟糕的是,临时在本地IP地址上运行服务器,然后让tumblr验证页重定向到该地址。你知道吗

最简单的方法可能是使用烧瓶:

from flask import Flask, request

app = Flask(__name__)
oauth_verifier = [''] # A list so it survives the garbage collector of handle_oauth_verifier():
@app.route('/')
def handle_oauth_verifier():
    # Catch oauth_verifier
    oauth_verifier[0] = request.args.get('oauth_verifier')
    # Shutdown server:
    request.environ.get('werkzeug.server.shutdown')()
    return("<p>Application succesfully authorized. You can close this tab now.</p>")
# Run server
app.run()

仅供参考,要更改tumblr用户授权页的回调URL,在获取请求令牌时必须使用POST传递URL,而在获取授权令牌时必须使用而不是传递URL!oauth2 library示例:

resp, content = client.request(request_token_url,"POST", 
    body=urllib.urlencode({"oauth_callback": oauth_verifier_fetch_url}))

希望这能帮助别人。你知道吗

相关问题 更多 >

    热门问题