Próbuję skonfigurować moją (iframe) aplikację Facebook, aby używać OAuth do uwierzytelniania. Użyłem python-sdk z Facebooka, ale jeszcze nie jestem usatysfakcjonowany wynikiem.Facebook OAuth login dla aplikacji canvas iframe wyświetla obraz logo i podpis Przejdź do Facebook.com zamiast logować się
Problem polega na tym, że kiedy przekierować użytkownika, że nigdy dostępnego mój wniosek do strony logowania, mój iframe diplays brzydką stronę pośredni, taki jak na następujący:
Jeśli użytkownik kliknie w linku "Przejdź do Facebook.com", zostaje przekierowana na standardową stronę "Zażądaj pozwolenia".
Czy istnieje jakiś sposób, aby uniknąć pierwszą stronę i prowadzi użytkownika prosto do drugiego?
Ten problem występuje przy pierwszym dostępie dla użytkowników, którzy nie udzielili jeszcze żadnego pozwolenia na moją aplikację.
Kod logowania na przykładzie OAuth w Pythonie 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))
Czy wyświetla się pierwsza strona, jeśli faktycznie jesteś zalogowany na Facebooku? Z mojego doświadczenia wynika, że zachowanie jest bardzo różne w zależności od tego, czy użytkownik jest zalogowany na Facebooku, czy nie, a jeśli użytkownik już zaakceptował aplikację, czy nie. –
Strona wyświetla się, dopóki użytkownik nie zaakceptuje mojej aplikacji, niezależnie od tego, czy jest zalogowany, czy nie. – abahgat