0

Google OAuth を使用して認証しようとしていますが、チュートリアルに従うのに少し問題があります。

これが私の現在の設定です:

    FLOW = OAuth2WebServerFlow(
        client_id='67490467925.apps.googleusercontent.com',
        client_secret='K1tkrPK97B2W16ZGY',
        scope='https://www.googleapis.com/auth/calendar',
        user_agent='Real_Hub/1.0',
        redirect_uri='http://127.0.0.1:8000/',)


    storage = Storage('calendar.dat')
    credentials = storage.get()
    if credentials is None or credentials.invalid == True:
        auth_uri = FLOW.step1_get_authorize_url()
        return auth_uri
    else:
        http = httplib2.Http()
        http = credentials.authorize(http)

        service = build(serviceName='calendar', version='v3', http=http,
                        developerKey='AIzaSyCBGjIQ2uNbThW_2oMO9P-Ufb8kc')

        return service
        #End OAUTH...

「code」変数をどこに置くべきかcredentials = flow.step2_exchange(code)、またどのように取得すればよいかわかりません。storage.put(credentials)API では、リダイレクト URL からと表示されます。しかし、私はこれを行う方法に従いません。

4

1 に答える 1

2

OAuth プロバイダーからのコールバックを処理するメソッドを定義し、そのコールバック メソッドをアプリケーションの URL にマップする必要があります。

  http://yourserver/auth_callback

次に、Flow クラスを作成するときに を URL にredirect_uri設定します。auth_callback

  FLOW = OAuth2WebServerFlow(
    client_id='67490467925.apps.googleusercontent.com',
    ...
    redirect_uri='http://yourserver/auth_callback')

を取得したらauth_uri、ユーザーをその uri にリダイレクトして、認証/承認できるようにする必要があります。

  self.redirect(auth_uri, ...)

認証/承認の後、OAuth プロバイダーは、先ほど指定した redirect_uri に「折り返し」ます。コールバック ハンドラ メソッドで、パラメータを解析するcodeか、パラメータが存在しない場合は確認しerrorます

  code = self.request.get("code")
  credentials = FLOW.step2_exchange(code)

注: 私はこれをテストしておらず、Python をしばらく使用していないため、構文がオフになっている可能性がありますが、一般的なアイデアが得られることを願っています。

于 2013-07-07T22:45:32.220 に答える