【问题标题】:flask_dance + Google Search Console API searchAnalyticsflask_dance + 谷歌搜索控制台 API searchAnalytics
【发布时间】:2017-12-30 02:02:06
【问题描述】:

我目前正在测试 Google Search Console API 和 Flask Dance 来做 oauth 的事情。

它非常适合获取 /sites,但我得到了一个

ValueError: View 函数没有返回响应

如果我尝试使用 /search 查询 searchAnalytics

根据https://developers.google.com/webmaster-tools/search-console-api-original/v3/searchanalytics/query#try-it,它必须是 POST + 附加数据。例如:

json={'startDate':'2017-11-01','endDate':'2017-12-01'}

https://developers.google.com/oauthplayground/ 中,它是这样工作的,但遗憾的是烧瓶舞不是这样。有什么想法吗?

import os
from werkzeug.contrib.fixers import ProxyFix
from flask import Flask, redirect, url_for
from flask_dance.contrib.google import make_google_blueprint, google
from raven.contrib.flask import Sentry

app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
sentry = Sentry(app)
app.secret_key = os.environ.get("FLASK_SECRET_KEY", "supersekrit")
app.config["GOOGLE_OAUTH_CLIENT_ID"] = os.environ.get("GOOGLE_OAUTH_CLIENT_ID")
app.config["GOOGLE_OAUTH_CLIENT_SECRET"] = os.environ.get("GOOGLE_OAUTH_CLIENT_SECRET")
google_bp = make_google_blueprint(scope=["profile", "email", "https://www.googleapis.com/auth/webmasters"])
app.register_blueprint(google_bp, url_prefix="/login")

@app.route("/")
def index():
    return "BlA BLA"

@app.route("/sites")
def sites():
    if not google.authorized:
        return redirect(url_for("google.login"))
    resp = google.get("/webmasters/v3/sites")
    siteEntry = resp.json()["siteEntry"]
    result = ""
    for site in siteEntry:
        result = result + site["siteUrl"] + "</br>"
    return result

@app.route("/search")
def search():
    if not google.authorized:
        return redirect(url_for("google.login"))
    resp = google.post("/webmasters/v3/sites/https%3A%2F%2Fzrce.eu/searchAnalytics/query", json={'startDate':'2017-11-01','endDate':'2017-12-01'})
    print(resp)

if __name__ == "__main__":
    app.run()

【问题讨论】:

    标签: python flask oauth google-search-console


    【解决方案1】:

    所有 API 路由都应该总是返回一些东西,即使它是一个空响应。

    只需返回一个响应,它可以是""resp

    【讨论】:

    • 测试没有成功。我认为这条路线与烧瓶舞正在做的事情是分开的。路由应该只定义我认为的输出 URL。
    • 即使您使用POST 方法,您仍然需要返回响应(即:结果或确认)。我已经更新了我的答案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    相关资源
    最近更新 更多