Сессия fb ios sdk для использования с существующим веб-сайтом fb connect

1

Как мой 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, на мой сайт. Я просто отправляю токен доступа на свой веб-сервер и на основе токена доступа обращается к графику (просто обходите указанную выше функцию)? Если это так, то как насчет всей проверки, которую предлагает вышеуказанная функция?

Теги:
iphone
facebook

2 ответа

0

Выбор и проверка файлов cookie полезны для доступа к Google AppEngine или JavaScript SDK.

Для доступа к сеансу пользователя, инициированному в приложении iOS, в Python SDK просто используйте:

graph = facebook.GraphAPI(access_token)
user = graph.get_object("me")

Надеюсь, что это поможет.

  • 0
    спасибо, но если мне нужен токен доступа, зачем нам нужна функция get_user_from_cookie, описанная выше? cookie, который анализируется кодом в моем сообщении, содержит больше, чем токен доступа ...
  • 0
    get_user_from_cookie (cookie, app_id, app_secret) Этот метод принимает куки, идентификатор приложения и секрет приложения. Он компилирует комбинацию клавиш приложения и генерирует подпись. Затем он ищет в cookie-файлах сохраненные подписи и сравнивает их с сгенерированным сигом. Если они совпадают, извлекаются значения, сохраненные для этого идентификатора приложения. Если вы действительно хотите взять токен доступа пользователя из iOS и использовать его с Python SDK, следует использовать метод facebook.GraphAPI ().
Показать ещё 2 комментария
0

Если вы хотите использовать 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"];

Таким образом, вы можете сохранить сеанс, и пользователь вводит логин и пароль только один раз. Я думаю, именно поэтому куки.

  • 0
    @ronin, спасибо, но я уже могу войти через ios и запросить данные графа. Мой вопрос: как мне использовать эту сессию с моим существующим веб-сайтом Facebook Connect? Я хочу войти через iphone, зайти на веб-сервер и получить данные из учетной записи пользователя, хранящейся в моей базе данных. Если я отправляю токен доступа на свой веб-сервер, нужна ли мне другая информация, кроме токена доступа, чтобы убедиться, что он действителен?
  • 0
    @ Дэвид Я думаю (но я не уверен) токена доступа, хранящегося на вашем веб-сервере, достаточно для подключения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню