Вход в Facebook OAuth для приложений холста iframe отображает изображение логотипа и подпись «Перейти на Facebook.com» вместо входа в систему

я пытаюсь настроить свое (iframe) приложение Facebook на использование OAuth для аутентификации. Я использовал python-sdk от Facebook, но пока не очень доволен результатом.

Проблема в том, что когда я перенаправляю пользователя, который никогда не обращался к моему приложению, на страницу входа в систему, мой iframe отображает уродливую промежуточную страницу, такую ​​как следующая:

The page I'm getting

Если пользователь нажимает ссылку «Перейти на Facebook.com», он затем перенаправляется на стандартную страницу «Запрос на разрешение».

Standard Request for Permission page

Есть ли там есть ли способ избежать первой страницы и направить пользователя прямо ко второй?

Эта проблема возникает при первом доступе для пользователей, которые еще не предоставили никаких разрешений моему приложению.

Код входа основан на пример 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))

15
задан sakibmoon 12 July 2013 в 06:15
поделиться