Xamarin FacebookClient

时间:2015-01-30 14:12:19

标签: android facebook xamarin xamarin.android xamarin.forms

我正在使用Xamarin Forms并希望将Facebook集成到Android应用程序中。我想从https://www.facebook.com/HyundaiIndia

这样的网页中提取Feed

我已经从Nuget安装了Xamarin.Facebook。它没有FacebookClient对象,如下所述:https://components.xamarin.com/gettingstarted/facebook-sdk

然后我找到了我包含的Xamarin.FacebookXamarin.FacebookBolts名称空间,但我仍然没有得到FacebookClient。相反,我找到了Xamarin.Facebook.XAndroid.Facebook并创建了一个实例:

Xamarin.Facebook.XAndroid.Facebook fb = new Xamarin.Facebook.XAndroid.Facebook(FacebookAppId);

但是这个对象没有GetTaskAsync。如何在Xamarin中下拉Feed?

2 个答案:

答案 0 :(得分:4)

我尝试按照您提到的文章时有同样的经历。 由Outercurve Foundation创建的组件(Facebook.dll版本6.2.1) 您需要引用Facebook.dll并将其包含在您的文件中,如下所示:

using Facebook;

不要把它与:

混淆
using Xamarin.Facebook;

修改

我终于找到了一些时间来获得更完整的答案以及链接上的示例 没有指定如何获取AccessToken(在问题中链接的facebook-sdk组件页面示例中称为userToken)我发布了一个可能的解决方案。 这个适用于我,并不需要任何其他库或组件(但问题中已经提到的那个)。

using Xamarin.Auth;
using Facebook;

string FaceBookAppId = "YOUR_FACEBOOK_APP_ID";
string AccessToken;
string OauthTokenSecret;
string OauthConsumerKey;
string OauthConsumerSecret;

void GetFBTokens()
{
    var auth = new OAuth2Authenticator(FaceBookAppId,
       "",
       new Uri("https://m.facebook.com/dialog/oauth/"),
       new Uri("https://www.facebook.com/connect/login_success.html")
      );

    auth.Completed += (sender, eventArgs) =>
    {
        if (eventArgs.IsAuthenticated)
        {
           eventArgs.Account.Properties.TryGetValue("access_token", out AccessToken);
           eventArgs.Account.Properties.TryGetValue("oauth_token_secret", out OauthTokenSecret);
           eventArgs.Account.Properties.TryGetValue("oauth_consumer_key", out OauthConsumerKey);
           eventArgs.Account.Properties.TryGetValue("oauth_consumer_secret", out OauthConsumerSecret);
        }
    };
}

//现在我们可以使用链接示例。

void PostToMyWall ()
{
    FacebookClient fb = new FacebookClient (AccessToken);
    string myMessage = "Hello from Xamarin";

    fb.PostTaskAsync ("me/feed", new { message = myMessage }).ContinueWith (t => {
        if (!t.IsFaulted) {
            string message = "Great, your message has been posted to you wall!";
            Console.WriteLine (message);
        }
    });
} 

答案 1 :(得分:0)

有两个版本的Facebook SDK,一个是针对官方SDK的绑定,另一个是来自Outercurve Foundation。

您似乎正在使用这个:the "official" binding,请查看此链接上的文档。