Facebook からグラフ ファイルを取得するには、https ://github.com/andrewiggins/Facebook-Friend-Graph というコードを使用します。
実際、それは長い間素晴らしい仕事をしてきました。しかし、突然、セルフパスが機能しなくなりましたか? self.path が空のようです。
編集: さて、いくつかの調査の結果、Facebook が実際に URL を返す方法を変更したことがわかりました。
彼らは次のようなURLを返しました:http://xxxxxx:8000/?accesstoken=
しかし、現在は次のように変更されています。http://xxxxxx:8000/?#accesstoken=
?# を理解できないため、self.path は使用できなくなりました。
任意のヒント?
accsesstoken.pyで失敗すると、次のエラーが表示されます。
127.0.0.1 - - [16/Oct/2013 11:21:36] "GET /? HTTP/1.1" 200 -
Traceback (most recent call last):
File "/Users/Eskil/Downloads/Facebook-Friend-Graph-master/src/2.7/main.py", line 49, in main
access_token = get_access_token(app_id)
File "/Users/Eskil/Downloads/Facebook-Friend-Graph-master/src/2.7/accesstoken.py", line 122, in get_access_token
raise Exception(httpd.error)
Exception: unknown error: {}
したがって、失敗したコードは accesstoken.py にあります。
def do_GET(self): """このメソッドは、ユーザーがログインした後、または Facebook 認証をキャンセルした後に、Facebook リクエストから access_token またはエラーを抽出します """ self.send_response(200) self.send_header('Content-type', ' text/html') self.end_headers()
self.server.access_token = ""
self.server.error = ""
if '?' in self.path:
query = urlparse.parse_qs(urlparse.urlparse(self.path)[4])
if query.has_key('access_token'):
self.server.access_token = query['access_token'][0]
self.wfile.write(html % ('Thank You!', 'You may now close this tab.'))
else:
self.server.error = query.get('error_reason', ['unknown error: %s' % str(query)])[0]
if self.server.error == 'user_denied':
self.wfile.write(html % ('Error', 'You must login to Facebook for the software to work.<br/>' +
'This software does not store any user names or passwords.'))
else:
self.wfile.write(html % ('Error', 'Sorry! An error has occurred. Please try again.'))
else:
self.wfile.write(html % ('Redirect', javascript_redirect))
URL に突然 # が含まれるため、セルフ パスは URL からアクセストークンを取得しません。