2

django を学び始めたばかりで、allauth アプリを組み込みたいと考えていました。一日中これを理解しようとしてきましたが、他の質問で答えが見つかりませんでした. ソーシャルログインの 1 つを追加しようとするたびに、ログイン画面を取得することさえできず、django は不平を言います:

get_login_url() keywords must be strings

プロバイダー リストをレンダリングしようとするとき。(allauth に付属の例からベース、インデックス、およびプロファイルをコピーしました)

ログインの 1 つを使用する前に、管理インターフェイスにソーシャル アプリを追加する必要があることを読みました。したがって、管理インターフェイスでは、より単純なもののいずれかを試してみたいので、OpenId を選択しました。私はまだFacebookのアプリIDなどを持っていないので、OpenIdを考えました。それは必要ありません。

ソーシャル アプリを登録するためのキーとシークレットに何を使用するかについて悩んでいます。私はこれに慣れていませんが、それはOAuth向けだと思いました。しかし、それを含めないと、フィールドに赤のフラグが立てられ、要求されます。キー/シークレットはどこで見つけて生成できますか?

また、OpenId を使用するには、Google や Yahoo などのサイトを指定する必要がありますか、それとも "OpenId" サイトだけですか?

それが違いを生む場合、私はまだmanage.py runserverを使用しています。しかし、ページを「レンダリング」することはまだできると思いました。

4

1 に答える 1

1

実行している Python のバージョンは何ですか? 古い 2.6 バージョンを使用している場合は、次のような問題が発生している可能性があります。

http://cuu508.wordpress.com/2011/01/27/keywords-must-be-strings/

それがあなたの問題を特定するかどうか私に知らせてください。もしそうなら、私はallauthあなたのバージョンでうまくプレイできるかどうかを確認します...

更新: これを自分でテストする時間がありませんでした。この変更を試してみませんか?:

--- a/allauth/socialaccount/templatetags/socialaccount.py
+++ b/allauth/socialaccount/templatetags/socialaccount.py
@@ -13,7 +13,7 @@ class ProviderLoginURLNode(template.Node):
     def render(self, context):
         provider_id = self.provider_id_var.resolve(context)
         provider = providers.registry.by_id(provider_id)
-        query = dict([(name, var.resolve(context)) for name, var
+        query = dict([(str(name), var.resolve(context)) for name, var
                       in self.params.iteritems()])
         request = context['request']
         if not query.has_key('next'):
于 2012-08-26T22:05:17.133 に答える