19

Python と Django で OAuth を使い始めました。Google API に必要です。localhost で作業しているため、url-callback 用のドメインを登録できません。Google OAuth を匿名ドメインで使用できることについて読みました。見つからない、どうすればどこでそれを行うことができますか?

編集:

私はこのビューを持っています:

def authentication(request):
    CONSUMER_KEY = 'xxxxx'
    CONSUMER_SECRET = 'xxxxx'
    SCOPES = ['https://docs.google.com/feeds/', ]

    client = gdata.docs.client.DocsClient(source='apiapp')
    oauth_callback_url = 'http://%s/get_access_token' % request.META.get('HTTP_HOST')
    request_token = client.GetOAuthToken(
      SCOPES, oauth_callback_url, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)
   domain = '127.0.0.1:8000'
   return HttpResponseRedirect(
        request_token.generate_authorization_url(google_apps_domain=domain))

そして、このエラー:

Google Apps を使用していないドメインのログイン ページにアクセスしました。Web アドレスを確認して、もう一度お試しください。

https://code.google.com/apis/console/経由で登録

編集:

CONSUMER_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
SCOPES = ['https://docs.google.com/feeds/', ]
DOMAIN = 'localhost:8000'


def authentication(request):    
    client = gdata.docs.client.DocsClient(source='apiapp')
    oauth_callback_url = 'http://%s/get_access_token' % DOMAIN

    request_token = client.GetOAuthToken(SCOPES,
                                     oauth_callback_url,
                                     CONSUMER_KEY,
                                     consumer_secret=CONSUMER_SECRET)

    return HttpResponseRedirect(
        request_token.generate_authorization_url())


def verify(request):
    client = gdata.docs.client.DocsClient(source='apiapp')
    f = open('/home/i159/.ssh/id_rsa')
    RSA_KEY = f.read()
    f.close()

    oauth_callback_url = 'http://%s/get_access_token' % DOMAIN

    request_token = client.GetOAuthToken(SCOPES,
                                     oauth_callback_url,
                                     CONSUMER_KEY,
                                     rsa_private_key=RSA_KEY)
    return HttpResponseRedirect(
        request_token.generate_authorization_url(google_apps_domain=DOMAIN))

エラー:

OAuth リクエスト トークンを取得できません: 400、コンシューマに証明書がありません: xxxxxxxxxxxxxxx.apps.googleusercontent.com

4

3 に答える 3

12

明確にするために、OAuth 1.0 または OAuth 2.0 での開発中に、localhost で Web アプリケーション フローを使用できます。OAuth 2.0 は、私たちが注目しているメカニズムであるため、優先する必要があります。OAuth 2.0 のユーザー エクスペリエンスは大幅に向上します。

localhost をコールバック URL として使用することを妨げるものは何もありません。私はいつもこれを自分でやっています。ポート番号を含め、コールバック URL が正確に一致することを確認するだけでよく、明らかな理由でそのようにアプリケーションをデプロイすることはできません。インストールされたアプリケーションはより複雑ですが、Django で何かを行う場合、OAuth 2.0 がベアラー トークン システムであるという事実を利用することができます。更新トークンをサーバー側に保持している限り、帯域外で独自のアプリケーションを認証してから、インストールされたアプリケーションにベアラー トークンを送信できます。インストールされたアプリケーションには、プロセスを繰り返す必要がある前に、呼び出しを行うための約 1 時間のウィンドウがあります。これは、ほとんどの場合、ユーザーに対して透過的に発生します。

于 2011-10-03T13:58:33.703 に答える
2

インストール済みアプリケーションの OAuth 1.0

それに加えて、コード例に実際のCONSUMER_KEYandを含めたくないでしょう。CONSUMER_SECRET

于 2011-10-02T15:04:18.633 に答える
1

引数なしでコードを試してください:

return HttpResponseRedirect(request_token.generate_authorization_url())
于 2011-10-02T15:30:12.103 に答える