Tôi đang cố gắng thiết lập ứng dụng Facebook (iframe) của mình để sử dụng OAuth để xác thực. Tôi đã sử dụng số python-sdk từ Facebook, nhưng tôi chưa thực sự hài lòng với kết quả.Đăng nhập OAuth trên Facebook cho ứng dụng canvas khung nội tuyến hiển thị hình ảnh logo và chú thích Chuyển đến Facebook.com thay vì đăng nhập
Vấn đề là khi tôi chuyển hướng người dùng mà không bao giờ truy cập ứng dụng của tôi đến trang đăng nhập, iframe tôi diplays một trang trung gian xấu xí, chẳng hạn như một sau:
Nếu người dùng nhấp chuột trên liên kết "Truy cập vào Facebook.com", sau đó cô được chuyển hướng đến trang "Yêu cầu quyền" chuẩn.
Có cách nào để tránh những trang đầu tiên và dẫn người dùng thẳng đến thứ hai?
Sự cố này xảy ra trên lần truy cập đầu tiên cho người dùng chưa cấp bất kỳ quyền nào cho ứng dụng của tôi.
Mã đăng nhập được dựa trên ví dụ OAuth trong 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))
Trang đầu tiên có hiển thị nếu bạn thực sự đã đăng nhập hay không đến Facebook? Theo kinh nghiệm của tôi, hành vi này rất khác nhau tùy thuộc vào việc người dùng của bạn có đăng nhập vào Facebook hay không và nếu người dùng của bạn đã chấp nhận đơn đăng ký của bạn hay chưa. –
Trang hiển thị cho đến khi người dùng chấp nhận chấp nhận đơn đăng ký của tôi, bất kể anh ta đang đăng nhập hay chưa. – abahgat