2008年8月26日

mixi openid

Google App Engine上でmixi OpenIDを使ってユーザ認証をするサンプルコード - yanbe.diff - subtech  
を参考にテストしたところ
local:8080 だと動作するが Cloud (GAE に upload すると)だと以下のエラーとなる。
---
Traceback (most recent call last):
File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 499, in __call__
handler.get(*groups)
File "/base/data/home/apps/blog-editor/1.937/mixi_login.py", line 28, in get
request = consumer.begin('https://mixi.jp')
File "/base/data/home/apps/blog-editor/1.937/openid/consumer/consumer.py", line 354, in begin
'No usable OpenID services found for %s' % (user_url,), None)
DiscoveryFailure: No usable OpenID services found for https://mixi.jp
----

以下、参考

http://d.hatena.ne.jp/mitsugi-bb/20080823/1219592219#c


http://www.socialpreneur.info/ja/blog/784

http://ms76.jp/2008/08/22/mixi_openid_for_wordpress/


http://insilico.jognote.com/blog/2008/08/13/curl-%E3%81%AB-https-%E3%81%A7%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E8%A8%BC%E6%98%8E%E6%9B%B8%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B/

---
おそらくこれが原因
Issue 407 http://code.google.com/p/googleappengine/issues/detail?id=407 :
webapp.RequestHandler.redirect missing location header for long urls

2 コメント:

kwin786 さんのコメント...

Issue 407 http://code.google.com/p/googleappengine/issues/detail?id=407 :
webapp.RequestHandler.redirect
missing location header for long urls

This is only an issue on the live production server not in the SDK.
I'm attempting to add OpenID
support to the framework I'm working on. A few OpenID servers
redirect to very long urls. If you
issue a webapp.RequestHandler.redirect(self, url) to a url over 487
characters long then a 300
level redirect is returned but there is no location set.

SDKでなくproduction server だと長いurl を返されるとだめな不具合が
ある。

nox さんのコメント...

こんにちは。
HTMLによるリダイレクトで取り合えず回避できます。参考までに。

Google App Engine: mixi OpenIDで認証する
mixi OpenID テスト

SQL and GQL                                             TOP

is null from google.appengine.ext import db
r = db.GqlQuery ("SELECT * FROM model WHERE property=:1",None) # None is the python Null. / see
count(*) r.count()
like r = db.GqlQuery("SELECT * FROM model WHERE property >= :1 and property < :2 ", search_key, urllib.unquote(search_key).decode("utf8") + u"\uFFFD" )
update see
!=!= # see
dateyymm = '2008-05-10 22:22:22' # see ydate = datetime.datetime.strptime(yymm, '%Y-%m-%d %H:%M:%S')
日付検索 from datetime import *
import datetime
d1 = datetime.datetime.strptime('2008-06-01', '%Y-%m-%d')
d2 = d1 + timedelta(days=10)
r = db.GqlQuery("select * from model where date >=:1 and date <:2 ",d1,d2)
 for rr in r: print datetime.datetime.strftime(rr,'%Y-%m-%d %H:%M:%S')
Dates and Times
datastore viewer
http://localhost:8080/_ah/admin/datastore?kind=StockSum&order=-nikkei_max&order_type=float&num=100&start=0
referencesee (back-references), Many-to-many Join
key, key_name ,id Key names and IDs cannot be used like property values
× select * from Greeting where key = "xxxx"
× select * from Greeting where id = xxx
○ r = Greeting.get(db.Key.from_path('Greeting', id)) # or key_name
○ r = db.get("agpoZWxsb3dvcmxkcgsLEgRCbG9nGNQBDA")
key = r.key()
id = r.key().id()