2017-12-28 3 views
0

현재 Google Search Console API 및 Flask Dance에서 oauth 작업을 테스트하고 있습니다.flask_dance + Google 검색 콘솔 API searchAnalytics

그것은/사이트를 얻기를위한 좋은 작품,하지만 난 그것을 POST +위한 추가적인 데이터를해야 https://developers.google.com/webmaster-tools/search-console-api-original/v3/searchanalytics/query#try-it에 따르면/검색

와 searchAnalytics를 조회하려고하면 내가

ValueError: View function did not return a response

를 얻을. 예컨대는 : https://developers.google.com/oauthplayground/에서

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

는 다음과 같이하지만, 플라스크 댄스와 함께 슬프게하지 작동합니다. 어떤 아이디어?

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() 

답변

0

모든 API 경로는 빈 응답 인 경우에도 항상 반환해야합니다.

응답을 회신하기 만하면 "" 또는 resp이 될 수 있습니다.

+0

성공적으로 테스트했습니다. 나는 그 경로가 무언가 플라스크 댄스와는 분리되어 있다고 생각합니다. 경로는 내가 생각하는 출력 URL을 정의해야합니다. – Tobi

+0

'POST' 메소드를 사용하더라도 여전히 응답 (예 : 결과 또는 확인)을 리턴해야합니다. 내 대답을 업데이트했습니다! –