Я пытаюсь настроить приложение Facebook (iframe) на использование OAuth для аутентификации.Я использовал python-sdk от Facebook, но пока не очень удовлетворен результатом.
Проблема в том, что когда я перенаправляю пользователя, который никогда не обращался к моему приложению, вСтраница входа, мой iframe отображает уродливую промежуточную страницу, такую как следующая:
Если пользователь нажимает на ссылку «Перейти на Facebook.com», она затем перенаправляетсяна стандартную страницу «Запрос на разрешение».
Есть ли способ избежать первой страницы и привести пользователя прямо ко второй?
Эта проблема возникает при первом доступе пользователей, которые еще не предоставили никакого разрешения моему приложению.
Код входа в систему основан на примере OAuth в Python SDK:
class LoginHandler(BaseHandler):
def get(self):
verification_code = self.request.get("code")
args = dict(client_id=FACEBOOK_APP_ID, redirect_uri=self.request.path_url)
if self.request.get("code"):
args["client_secret"] = FACEBOOK_APP_SECRET
args["code"] = self.request.get("code")
raw_response = urllib.urlopen(
"https://graph.facebook.com/oauth/access_token?" +
urllib.urlencode(args)).read()
logging.debug("access_token raw response " + raw_response)
response = cgi.parse_qs(raw_response)
access_token = response["access_token"][-1]
# Download the user profile and cache a local instance of the
# basic profile info
graph = facebook.GraphAPI(access_token)
profile = graph.get_object("me")
user = User.get_by_key_name(profile["id"])
if not user:
user = User(key_name=str(profile["id"]),
id=str(profile["id"]),
name=profile["name"],
firstname=profile["first_name"],
profile_url=profile["link"],
access_token=access_token)
user.put()
elif user.access_token != access_token:
# we already know this user, but we need to update
user.access_token = access_token
user.put()
set_cookie(self.response, "fb_user", str(profile["id"]),
expires=time.time() + 30 * 86400)
self.response.headers["P3P"] = 'CP="IDC CURa ADMa OUR IND PHY ONL COM STA"'
self.redirect("/")
else:
self.redirect(
"https://graph.facebook.com/oauth/authorize?" +
urllib.urlencode(args))