Fandjango を使用して、Facebook ユーザーの relationship_status と significant_other.name にアクセスしようとしていますが、これらの属性が見つかりません。私のコード:
from django.shortcuts import render
from quiz.models import Quiz, Question
from django.http import HttpResponse
from fandjango.decorators import facebook_authorization_required
@facebook_authorization_required(permissions=['user_activities', 'user_hometown', 'user_interests', 'user_location', 'user_relationship_details', 'user_events', 'friends_relationships'])
def home(request):
user = request.facebook.user
print dir(user)
context = {
'user': user,
}
return render(request, 'quiz/home.html', context)
https://developers.facebook.com/docs/graph-api/reference/user/からすべての Facebook 属性のリストを印刷して、機能するものと機能しないものを追跡しています。
<ul>
<li>ID: {{user.id}}</li>
<li>Link: {{user.link}}</li>
<li>First Name: {{user.first_name}}</li>
<li>Quotes: {{user.quotes}}</li>
<li>Name: {{user.name}}</li>
<li>Hometown: {{user.hometown}}</li>
<li>Bio: {{user.bio}}</li>
<li>Religion: {{user.religion}}</li>
<li>Middle Name: {{user.middle_name}}</li>
<li>About: {{user.about}}</li>
<li>Verified: {{user.is_verified}}</li>
<li>Gender: {{user.gender}}</li>
<li>Third-party: {{user.third_party_id}}</li>
<li>Relationship-status: {{user.relationship_status}}</li>
<li>Last-name: {{user.last_name}}</li>
<li>Locale: {{user.locale}}</li>
<li>Verified: {{user.verified}}</li>
<li>Political: {{user.political}}</li>
<li>Name-format: {{user.name_format}}</li>
<li>Sig Other: {{user.significant_other}}</li>
<li>Website: {{user.website}}</li>
<li>Location: {{user.location}}</li>
<li>Username: {{user.username}}</li>
</ul>
これは、ID、ミドルネーム、性別、姓、およびロケールのみを生成します。パブリック プロファイルの属性のみを取得していることは明らかですが、残りの属性にアクセスする方法はわかりません。
アクセスできる属性を把握するために、その dir(user) コマンドを実行すると、次の結果が得られます。
['DoesNotExist', 'MultipleObjectsReturned', '__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', '__init__', u'__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_base_manager', '_default_manager', '_deferred', '_do_insert', '_do_update', '_get_FIELD_display', '_get_next_or_previous_by_FIELD', '_get_next_or_previous_in_order', '_get_pk_val', '_get_unique_checks', '_meta', '_oauth_token_cache', '_perform_date_checks', '_perform_unique_checks', '_save_parents', '_save_table', '_set_pk_val', '_state', 'answer_set', 'authorized', 'birthday', 'clean', 'clean_fields', 'created_at', 'date_error_message', 'delete', 'email', 'extra_data', 'facebook_id', 'facebook_username', 'first_name', 'full_clean', 'full_name', 'gender', 'get_next_by_created_at', 'get_next_by_last_seen_at', 'get_previous_by_created_at', 'get_previous_by_last_seen_at', 'graph', 'id', 'last_name', 'last_seen_at', 'locale', 'middle_name', 'oauth_token', 'oauth_token_id', 'objects', 'permissions', 'picture', 'pk', 'prepare_database_save', 'save', 'save_base', 'serializable_value', 'synchronize', 'unique_error_message', 'validate_unique']
明らかに、それは機能しているものを示しており、機能していないものはリストしていません。
非公開プロファイル属性へのアクセスについてかなり明白な何かが欠けているように感じますが、それが何であるかは本当にわかりません.
編集:さらに調査を行った後、必要なすべての属性を取得するには、ユーザーの auth_token をグラフ API に渡す必要があると考え始めていますが、Fandjango フレームワークでそれを行う方法がわかりません。これは私の最初の試みですが、「Graph API object is not callable」を返します:
oauth = request.facebook.user.oauth_token
user = request.facebook.user
facebook_graph = user.graph(oauth)