using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Facebook;

public partial class _Default : System.Web.UI.Page
{
    Facebook.Components.FacebookService _fbService = new Facebook.Components.FacebookService();
    private const string FACEBOOK_APPKEY = "f7bf727e44a2c2860a943656e5115572";  // From the Facebook application page
    private const string FACEBOOK_SECRET = "4072821e3dd920d33924456a077161a2";  // From the Facebook application page

    string userId;

    protected void Page_Load(object sender, EventArgs e)
    {
        _fbService.ApplicationKey = FACEBOOK_APPKEY;
        _fbService.Secret = FACEBOOK_SECRET;
        _fbService.IsDesktopApplication = false;

        string sessionKey = Session["facebook_session_key"] as String;
        userId = Session["facebook_userId"] as String;

        // When the user uses the facebook login page, 
        // the redirect back here will have the auth_token in the query params
        string authToken = Request.QueryString["auth_token"];

        if (!String.IsNullOrEmpty(sessionKey))
        {
            _fbService.SessionKey = sessionKey;
            _fbService.UserId = userId;
        }
        else if (!String.IsNullOrEmpty(authToken))
        {
            _fbService.CreateSession(authToken);
            Session["facebook_session_key"] = _fbService.SessionKey;
            Session["facebook_userId"] = _fbService.UserId;
            Session["facebook_session_expires"] = _fbService.SessionExpires;
        }
        else
        {
            Response.Redirect(@"http://www.facebook.com/login.php?api_key=" +
                _fbService.ApplicationKey + @"&v=1.0");
        }
        if (!IsPostBack)
        {
            System.Collections.ObjectModel.Collection<User> userinfo = _fbService.GetUserInfo(_fbService.UserId);
            Label1.Text = userinfo[0].FirstName + "'s favorite shops";
            Image1.ImageUrl = userinfo[0].PictureUrl.ToString();

            // Use the FacebookService Component to populate Friends
            System.Collections.ObjectModel.Collection<User> Friends = _fbService.GetFriends();
            for (int i = 0; i < Friends.Count; i++)
                DropDownList2.Items.Add(Friends[i].FirstName.ToString());
        }

    }

}
