Runwithfriends FBサンプルアプリを編集して、独自のアプリを作成しています。それはうまく機能していて、私はあちこちでいくつかの変更を加えていました。約2週間休憩しましたが、アプリにアクセスしようとすると、奇妙なPythonエラーが発生します。
C:\ Program Files \ Apache Software Foundation \ Tomcat 7.0 \ webapps \ ROOT \ app \ main.py in init_facebook(self = < main .RecentRunsHandler object>)316 user_id = facebook.user_id、friends = friends、317 access_token=facebook。 access_token、name = me [u'name']、=> 318 email = me.get(u'email')、picture = me [u'picture'])319 user.put()320(KeyErrorを除く)、例:
<..一部がクリップされました..>
class'google.appengine.api.datastore_errors.BadValueError'>:プロパティ画像はdict argsではなくstrまたはunicodeインスタンスである必要があります=('プロパティ画像はdictではなくstrまたはunicodeインスタンスである必要があります'、)message = 'プロパティ画像は、dictではなくstrまたはunicodeインスタンスである必要があります'"
これは非常に一般的なエラーですが、次のコードを指しています。このコードは常に存在し、私はそれに触れたことがありません。私は今、他にどこを見るべきか本当にわかりません-私は徹底的に検索しましたが、手がかりを見つけることができませんでした。申し訳ありませんが、これがまだ広すぎる場合は、これをデバッグするために他にどのような情報を提供できるか教えていただければ幸いです:-(
def init_facebook(self):
"""Sets up the request specific Facebook and User instance"""
facebook = Facebook()
user = None
# initial facebook request comes in as a POST with a signed_request
if u'signed_request' in self.request.POST:
facebook.load_signed_request(self.request.get('signed_request'))
# we reset the method to GET because a request from facebook with a
# signed_request uses POST for security reasons, despite it
# actually being a GET. in webapp causes loss of request.POST data.
self.request.method = u'GET'
self.set_cookie(
'u', facebook.user_cookie, datetime.timedelta(minutes=1440))
elif 'u' in self.request.cookies:
facebook.load_signed_request(self.request.cookies.get('u'))
# try to load or create a user object
if facebook.user_id:
user = User.get_by_key_name(facebook.user_id)
if user:
# update stored access_token
if facebook.access_token and \
facebook.access_token != user.access_token:
user.access_token = facebook.access_token
user.put()
# refresh data if we failed in doing so after a realtime ping
if user.dirty:
user.refresh_data()
# restore stored access_token if necessary
if not facebook.access_token:
facebook.access_token = user.access_token
if not user and facebook.access_token:
me = facebook.api(u'/me', {u'fields': _USER_FIELDS})
try:
friends = [user[u'id'] for user in me[u'friends'][u'data']]
user = User(key_name=facebook.user_id,
user_id=facebook.user_id, friends=friends,
access_token=facebook.access_token, name=me[u'name'],
email=me.get(u'email'), picture=me[u'picture'])
user.put()
except KeyError, ex:
pass # ignore if can't get the minimum fields
self.facebook = facebook
self.user = user