Я написал оболочку для C # Facebook SDK, используя следующий код:
public interface IFacebookService
{
Uri GetLoginUri(string returnUrl);
FacebookResult OAuth(string url, string code);
void Post(string message, string accessToken);
}
Реализация выглядит так:
public class FacebookService : IFacebookService
{
public Uri GetLoginUri(string returnUrl)
{
var oAuthClient = new FacebookOAuthClient(FacebookApplication.Current);
// code removed for simplicity
return uri;
}
public FacebookResult OAuth(string url, string code)
{
FacebookOAuthResult oauthResult;
if (FacebookOAuthResult.TryParse(url, out oauthResult))
{
// code removed for simplicity
}
return result;
}
public void Post(string message, string accessToken)
{
var client = new FacebookClient(accessToken);
// code removed for simplicity
}
}
Я использую Ninject, чтобы внедрить это, где это необходимо для входа в систему с использованием oauth и публикации на стене пользователя Facebook.
У меня сейчас настроено это использование:
kernel.Bind<IFacebookService>().To<FacebookService>().InSingletonScope();
Правильно ли использовать InSingletonScope? Поскольку это сторонняя библиотека, я не уверен, что это правильный подход, так как все потоки будут совместно использовать экземпляр.