2012-03-28 4 views
4

У меня проблемы с использованием привязки facebook отсюда (https://github.com/mono/monotouch-bindings/tree/master/facebook), и проблема в том, что функция авторизации (входа) не работает на устройстве. На симуляторе он работает отлично, но из устройства вместо окна входа в webbrowser запускается официальное приложение facebook (установлено на телефоне).Facebook api with monotouch

То же самое происходит с образцом, снабженным связыванием.

Любые идеи, как я могу использовать браузер для входа в систему (если я не удалю официальное приложение facebook, оно нормально работает и на устройстве) вместо приложения facebook?

код я использую:

class SessionDelegate : FBSessionDelegate 
{ 
    AppDelegate container; 
    NSAction onLogin; 

    public NSAction OnLogin { 
     get { 
      return this.onLogin; 
     } 
     set { 
      onLogin = value; 
     } 
    }  

    public SessionDelegate (AppDelegate container) 
    { 
     this.container = container; 
    } 

    public override void DidNotLogin (bool cancelled) 
    { 
     Console.WriteLine("did not login"); 
     //container.SaveAuthorization(); 
     if(OnLogin != null) OnLogin.Invoke(); 
    } 

    public override void DidLogin() 
    { 
     Console.WriteLine("login !"); 
     container.SaveAuthorization(); 
     if(OnLogin != null) OnLogin.Invoke(); 
    } 

    public override void DidLogout() 
    { 
     Console.WriteLine("logout !"); 
     container.ClearAuthorization(); 
    } 
} 

И:

var sessionDelegate = new SessionDelegate (this); 
facebook   = new Facebook (LocalSettings.FacebookAppId, sessionDelegate); 
var defaults = NSUserDefaults.StandardUserDefaults; 
if (defaults ["FBAccessTokenKey"] != null && defaults ["FBExpirationDateKey"] != null) 
{ 
     facebook.AccessToken = defaults ["FBAccessTokenKey"] as NSString; 
     facebook.ExpirationDate = defaults ["FBExpirationDateKey"] as NSDate; 
} 

и для входа в систему:

facebook.Authorize(new string [] { "email", "publish_stream", "read_friendlists", "user_photos" });   
+0

Если бы я должен был догадаться, так будет работать их библиотека. Разве это не логин для вас? – jonathanpeppers

+0

Нет, это не так. И он возвращается в мое приложение, вызывающее функцию «DidNotLogin» из FBSessionDelegate. – Daniel

ответ

3

Итак, я нашел ответ сам. Проблема заключалась в настройках приложения для разработчиков facebook, идентификатор пакета iOS не был таким же, как у идентификатора monodevelop.

0

Эта функция является разработчиком намерены. Сначала я не понимаю, почему вы этого не хотите, а во-вторых, это библиотека с открытым исходным кодом. вы можете пройти через код и найти фрагмент кода, который это делает. Затем измените его на то, что вы хотите. Теперь я ищу это в этой библиотеке. Пока я получил ответ, я отвечаю. Но я предполагаю, что они использовали UIApplication.SharedApplication. * Чтобы открыть приложение Facebook, если оно доступно.

С уважением, Пеймана Mortazavi

+0

У меня не было проблем с приложением facebook, если оно сработало, но это не так. он возвращается в мое приложение, вызывая функцию «DidNotLogin» из FBSessionDelegate. – Daniel

+0

Можете ли вы разместить код? – jonathanpeppers

+0

ОК, я добавил код. Но я уверен, что проблема не в моем коде. – Daniel

0

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