Как мой fb подключается к веб-серверу для аутентификации пользователя, который входит в систему через fb ios sdk? У меня есть веб-сайт, который использует соединение facebook. В нем я использую секрет приложения для аутентификации пользователя с помощью файла cookie, созданного javascript sdk facebook через библиотеку python facebook:
def get_user_from_cookie(cookies, app_id, app_secret):
"""Parses the cookie set by the official Facebook JavaScript SDK.
cookies should be a dictionary-like object mapping cookie names to
cookie values.
If the user is logged in via Facebook, we return a dictionary with the
keys "uid" and "access_token". The former is the user Facebook ID,
and the latter can be used to make authenticated requests to the Graph API.
If the user is not logged in, we return None.
Download the official Facebook JavaScript SDK at
http://github.com/facebook/connect-js/. Read more about Facebook
authentication at http://developers.facebook.com/docs/authentication/.
"""
cookie = cookies.get("fbs_" + app_id, "")
if not cookie: return None
args = dict((k, v[-1]) for k, v in cgi.parse_qs(cookie.strip('"')).items())
payload = "".join(k + "=" + args[k] for k in sorted(args.keys())
if k != "sig")
sig = hashlib.md5(payload + app_secret).hexdigest()
expires = int(args["expires"])
if sig == args.get("sig") and (expires == 0 or time.time() < expires):
return args
else:
return None
Теперь мне интересно, как подключить пользователя, который входит в систему через iphone, на мой сайт. Я просто отправляю токен доступа на свой веб-сервер и на основе токена доступа обращается к графику (просто обходите указанную выше функцию)? Если это так, то как насчет всей проверки, которую предлагает вышеуказанная функция?
Выбор и проверка файлов cookie полезны для доступа к Google AppEngine или JavaScript SDK.
Для доступа к сеансу пользователя, инициированному в приложении iOS, в Python SDK просто используйте:
graph = facebook.GraphAPI(access_token)
user = graph.get_object("me")
Надеюсь, что это поможет.
Если вы хотите использовать Facebook iOS API, вам нужно:
Выделить и инициировать объект Facebook
Facebook *facebookObject = [[Facebook alloc] init];
Проверьте разрешения
NSArray *permissions = [NSArray arrayWithObjects:@"publish_stream", @"offline_access",nil];
Авторизуйтесь в Facebook
[facebookObject authorize:APP_ID permissions:permissions delegate:self];
После этого вы можете использовать NSUserDefaults для продолжения сессии так:
Для хранения сессии я использую NSUserDefaults.
[[NSUserDefaults standardUserDefaults] setObject:facebookObject.accessToken forKey:@"AccessToken"];
[[NSUserDefaults standardUserDefaults] setObject:facebookObject.expirationDate forKey:@"ExpirationDate"];
[[NSUserDefaults standardUserDefaults] synchronize];
После этого я могу поймать доступ с:
facebookObject.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"];
facebookObject.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"];
Таким образом, вы можете сохранить сеанс, и пользователь вводит логин и пароль только один раз. Я думаю, именно поэтому куки.