автоматический вход в facebook

Я создаю настольное приложение на C #. одно из того, что должно делать это приложение, - это публиковать информацию о статусе пользователя в facebook (например: «Дэйв только что выиграл 3 золотые медали»). это должно произойти независимо от того, вошел ли пользователь сейчас в facebook или нет. Я хочу, чтобы пользователь дал мне все необходимые разрешения один раз, и тогда все произошло бы автоматически (я бы сохранил все, что нужно, в моей БД). Я попытался использовать набор инструментов разработчика facebook 2.0 для .net, но не нашел там ничего, что могло бы мне помочь. ЛЮБАЯ помощь будет оценена по достоинству.


person Hagai L    schedule 20.07.2009    source источник


Ответы (2)


На ваш вопрос: вам необходимо использовать API Facebook Connect

  • есть функция под названием offline_access - это расширенное разрешение.
  • В FB Connect вам нужно переключить правильное всплывающее окно:
  • The workflow will be like that:
    • User uses FB Connect to confirm the fact he wants to connect your app to his facebook account.
    • Вы запускаете всплывающее окно.
    • Затем вы можете звонить на все звонки с его разрешения, даже если он не в сети (или не использует подключение к facebook).

Для понимания: FB Connect предназначен для того, чтобы вы могли легко авторизовать пользователя в его приложении и делать все от его имени. offline_access на самом деле предназначен для работы cronjob.

person Andreas Klinger    schedule 20.07.2009
comment
благодаря. Можете ли вы сказать мне, можно ли (и как) это сделать с помощью инструментария разработчика? - person Hagai L; 20.07.2009
comment
извините, у меня есть только практический опыт работы с приложениями fb connect и canvas - person Andreas Klinger; 20.07.2009
comment
я добавил несколько ссылок, касающихся настольных приложений - надеюсь, они все равно вам помогут - person Andreas Klinger; 20.07.2009
comment
большое спасибо. Я использую ваши ссылки и другие ресурсы, чтобы завершить это. Попробую выложить готовый код сюда. - person Hagai L; 21.07.2009

Я получил здесь несколько ответов. Думаю, он отвечает на другие вопросы, которые я недавно видел в сети:

Мой ответ связан с настольными приложениями, которые работают вне фейсбука (подключение к фейсбуку). + Я использую набор инструментов разработчика facebook 2.1:

Вот как получить специальное разрешение, необходимое для автономного доступа. и как получить сеансовый ключ:

facebook.Components.FacebookService FS = new facebook.Components.FacebookService();
FS.GetExtendedPermission(facebook.Types.Enums.Extended_Permissions.offline_access);

Вторая строка заставит вас войти в систему, а затем будет запрашивать разрешение после того, как пользователь выберет разрешение, которое вы указываете в URL-адресе публикации - fb_si_session_key. НО разработчики инструментария не сделали достаточно, чтобы донести его до вас :-(

Так что у вас есть несколько вариантов. простой - сделать:

FS.Logoff();
FS.ConnectToFacebook();

Что произойдет, так это то, что вы увидите экран входа в систему на секунду, и прежде чем вы сможете щелкнуть что-либо, он исчезнет. но на этот раз у вас будет правильный сеансовый ключ. получить это можно так:

string myPermanentSessionKey =  FS.API.SessionKey;

Если вы не хотите снова показывать этот надоедливый экран, у вас есть несколько вариантов, все они связаны с изменением исходных файлов инструментария. Я не буду здесь вдаваться в подробности, но просто расскажу вам простой вариант: в функции facebookconnect () я изменил его, чтобы получить параметр (isShow), когда я отправляю ему true, он ведет себя нормально, когда я отправляю false на это - он пропускает formLogin.ShowDialog();

Это работает.

person Hagai L    schedule 26.07.2009
comment
еще кое-что. после того, как вы дадите разрешение, facebook предложит вам закрыть окно. но если вы это сделаете - возникнет исключение. это СНОВА из-за инструментария. Я справился с этим с помощью try catch. жду, когда-нибудь в будущем у меня появится лучший инструментарий или исправлю его сам, когда у меня будет время - person Hagai L; 26.07.2009
comment
Теперь, когда я более опытен в facebook, я считаю, что есть способы получше, во всяком случае, теперь есть новый API, поэтому все здесь становится старым. особенно когда они выбросят старый API. как сейчас твиттер. - person Hagai L; 05.05.2010