如何使用c#Facebook SDK进行“apprequest”?

时间:2014-05-13 08:42:01

标签: c# facebook windows-phone-8 facebook-app-requests

我想使用c#facebook sdk从我的应用程序中提出申请。

经过一些调查后,我发现一些使用app访问令牌的示例,其格式如下:access_token = YOUR_APP_ID | YOU_APP_SECRET

现在我使用appAccessToken尝试了以下内容:

string appAccessToken = String.Format("{0}|{1}",Constants.FacebookAppId,Constants.FacebookAppSecret);           

        FacebookClient fb = new FacebookClient(appAccessToken);

        fb.PostCompleted += (o, args) =>
        {
            if (args.Error != null)
            {
                Dispatcher.BeginInvoke(() => MessageBox.Show(args.Error.Message));
                return;
            }


        };

        dynamic parameters = new ExpandoObject();
        parameters.message = "Test: Action is required";
        parameters.data = "Custom Data Here";


        fb.PostTaskAsync(String.Format("{0}/apprequests", Constants.FacebookAppId), parameters);

但它不起作用......是否有可能使用c#Facebook skd进行apprequest? 我希望有人可以帮助我。

祝你有愉快的一天! 最诚挚的问候,马蒂亚斯

1 个答案:

答案 0 :(得分:0)

获取App的访问令牌。 只需使用此链接即可获得

https://developers.facebook.com/tools/access_token/

请检查一下:http://facebooksdk.net/docs/phone/tutorial

获取用户访问令牌

将此添加到App.xaml.cs

    internal static string AccessToken = String.Empty;
    internal static string FacebookId = String.Empty;
    public static bool IsAuthenticated = false;
    public static FacebookSessionClient FacebookSessionClient = new FacebookSessionClient(Constants.FacebookAppId);

创建获取访问令牌的方法

private async Task Authenticate()
        {
            try
            {
                _session = await App.FacebookSessionClient.LoginAsync("user_about_me,read_stream");
                App.AccessToken = _session.AccessToken;
                App.FacebookId = _session.FacebookId; 
            }
            catch (InvalidOperationException e)
            {
                var messageBox = new OneButtonCustomMessageBox
                {
                    TbMessageTitle = { Text = "Facebook Login Error" },
                    TbMessageContent = {Text = e.Message}
                };
                messageBox.Show();
            }
        }

获得访问令牌后,您将使用这样的方法从FB调用GraphAPI以获取用户信息

 private async void LoadUserInfo()
        {
            var fb = new FacebookClient(App.AccessToken);

            fb.GetCompleted += (o, e) =>
            {
                if (e.Error != null)
                {
                    Dispatcher.BeginInvoke(() => MessageBox.Show(e.Error.Message));
                    return;
                }

                var result = (IDictionary<string, object>)e.GetResultData();

                Dispatcher.BeginInvoke(async () =>
                {    
                    var profilePictureUrl = string.Format("https://graph.facebook.com/{0}/picture?type={1}&access_token={2}", App.FacebookId, "normal", App.AccessToken);                    

                    this.ImgAvatar.Source = new BitmapImage(new Uri(profilePictureUrl));
                    this.TxtName.Text = String.Format("{0}", (string)result["name"]);                    


                });
            };

            await fb.GetTaskAsync("me");
        }