Showing posts with label Facebook. Show all posts
Showing posts with label Facebook. Show all posts

Sunday, 20 January 2013

Getting Facebook Contacts in 4 Simple Steps


Here I am giving you simple demonstration about how to import contacts from Facebook.

Step 1: Create a facebook app at https://developers.facebook.com/
 I have created a try app which I am using to get my FB contacts:

client_id=345255442153376
Client_Secret=dba2c658b768480a616d7fc7f198e725  &
redirect_uri=http://localhost:6209/default.aspx


After completing step 1 go to step 2.


Step 2:  Browse to the below url in browser window:


it will ask for permissions click Allow Button:
This will give u a window like below which is having code=some_code like query string in browser window we need to use this code further.



We need to use code 

(code=AQDAklJNfyMiZvOSUZBCHgw0KTwIQoJRPoN0tTJ90CJL6Xb547wHRaKlem81WWQsg_59o-OI9-VpoF7O0UQ09wAqn6AUV0QX7CYreYvlIQjPS4D5ptoUxJep1hJ5CGgo9zCayyaS5W8emja39bUYas4SvdsR9vLLVnGOCDDGgmvrO4e0enIh5nXchXbb3JxJw6EDz4Cqf2OSzunCLLWEZxux#_=)  in next step.

Step3 :  Now browse to the url in browser window:


Note: we need to use same code which we have retrieved in step2.    
                               
This step will give you an access token as query string. Something likes this:


access_token= AAACEdEose0cBAM3Dbomr0wlNsMySIa8QGavZB15onOZAGZBGi8bPLHLOZCl6HXVCTNO17sPLArfThihlAbosDlyfbFJyZAOh2EHVbWZB3WbKxAX1o5E9Gi

Now we need to use this access i to get contacts in next step.

Step 4: Browse to the below url and it will give u contacts in Json format.

https://graph.facebook.com/me?access_token=AAACEdEose0cBAM3Dbomr0wlNsMySIa8QGavZB15onOZAGZBGi8bPLHLOZCl6HXVCTNO17sPLArfThihlAbosDlyfbFJyZAOh2EHVbWZB3WbKxAX1o5E9Gi/me/friends

Note: we need to use same access token which we have retrieved in step3. 
For implementing above code you need to use asp.net HttpRequest and HttpResponse Objects.

For more go to:

Friday, 23 September 2011

Post to friend's wall in facebook

for posting on users wall we have to give publish_stream in scope.for all scope and permission in facebook you can follow the link:
http://developers.facebook.com/docs/reference/api/permissions/


callback.aspx.cs:
--------------------------------------------------
oAuthFacebook oAuth = new oAuthFacebook();
if (Request["code"] != null)
        {
            try
            {
                oAuth.AccessTokenGet(Request["code"]);
                Api api = new Api(oAuth.Token);
                User u = api.GetUser();
                api.PostFeedToTarget(friendFacebookId,"Message", "Picture Path on web", "Link", "Name", "Caption", "Description");
              }
             catch
            {

             }
    }


Wednesday, 7 September 2011

for getting user as well as friends birthday in facebook

for getting user and his friend DOB we have to give user_birthday,friends_birthday in scope. for all scope and permission in facebook you can follow the link:
http://developers.facebook.com/docs/reference/api/permissions/


for getting DOB we can use FQL(facebook querry language) in callback.aspx.cs file:
calback.aspx.cs:
--------------------------------------------------
oAuthFacebook oAuth = new oAuthFacebook();

        if (Request["code"] == null)
        {

            oAuth.AccessTokenGet(Request["code"]);

        }
        else
        {
            try
            {
                oAuth.AccessTokenGet(Request["code"]);
                Api api = new Api(oAuth.Token);
                User u = api.GetUser();
                facebookId = api.UserID;
                fullName = u.first_name + " " + u.last_name;
                email = u.email;
                photoPath = api.GetPictureURL(u.id);

                var arr = api.Fql("SELECT birthday FROM user WHERE uid=" + facebookId);
               
 NOTE: FQL returns JSON object which we can use to get user DOB like arr.JsonObjects[0].Properties["birthday"].ToString();
          
-------------------------------------------------

For getting friend's DOB

IList friends = (IList)api.GetFriends();
            
                foreach (Facebook_Graph_Toolkit.FacebookObjects.NameIDPair pair in friends)
                {
                    friendId = pair.id;
                    friendName = pair.name;
                    var arrFriend = api.Fql("SELECT birthday,email FROM user WHERE uid=" + friendId);
                }

how to post on user's wall in facebook

for posting on users wall we have to give publish_stream in scope.for all scope and permission in facebook you can follow the link:
http://developers.facebook.com/docs/reference/api/permissions/


callback.aspx.cs:
--------------------------------------------------
oAuthFacebook oAuth = new oAuthFacebook();
if (Request["code"] != null)
        {
            try
            {
                oAuth.AccessTokenGet(Request["code"]);
                Api api = new Api(oAuth.Token);
                User u = api.GetUser();
                api.PostFeed("Message", "Picture Path on web", "Link", "Name", "Caption", "Description");
              }
             catch
            {

             }
    }


Retrieving facebook contacts

First you need to create an app on facebook app from following url  http://developers.facebook.com/
 

Click on app option and you will get following window from where you can create new application on facebook by clicking on create new app button.


after cliccking on create new app button you will get following window 

 

Give your app name and check the checkbox for terms and conditions of facebook. after that click on continue button.

by that your app will be created on facebook and you will get app id and secret which we have to use in our code.



I am using facebook graph api  to import facebook contacts in our asp.net application. we need to include facebookGraphApi.dll and Newtonsoft.json.dll in your project. after that you need to add config section in web.config file.

<configuration>
 <configSections>
    <section name="FacebookGraphToolkitConfiguration" type="Facebook_Graph_Toolkit.FacebookGraphToolkitConfiguration"/>
  </configSections>
  <FacebookGraphToolkitConfiguration FacebookAppID="yourAppKey" FacebookAppSecret="YourAppSecret"/>

</configuration>

add oAuthFacebook.cs file in your project which contains:
-------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections.Specialized;
using System.IO;
using System.Net;

public class oAuthFacebook
{
    public enum Method { GET, POST };
    public const string AUTHORIZE = "https://graph.facebook.com/oauth/authorize";
    public const string ACCESS_TOKEN = "https://graph.facebook.com/oauth/access_token";
    public const string CALLBACK_URL = "http://www.yourSite.com/CallBack.aspx";

    private string _consumerKey = "";
    private string _consumerSecret = "";
    private string _token = "";

    public oAuthFacebook()
    {
    }

    #region Properties

    public string ConsumerKey
    {
        get
        {
            if (_consumerKey.Length == 0)
            {
                _consumerKey = "xxxxxxxx"; //Your application ID
            }
            return _consumerKey;
        }
        set { _consumerKey = value; }
    }

    public string ConsumerSecret
    {
        get
        {
            if (_consumerSecret.Length == 0)
            {
                _consumerSecret = "xxxxxxxxxxxxxxxxxxxxxxx";//Your application secret
            }
            return _consumerSecret;
        }
        set { _consumerSecret = value; }
    }

    public string Token { get { return _token; } set { _token = value; } }

    #endregion

    /// <summary>
    /// Get the link to Facebook's authorization page for this application.
    /// </summary>
    /// <returns>The url with a valid request token, or a null string.</returns>
    public string AuthorizationLinkGet(string url)
    {
        return string.Format("{0}?client_id={1}&redirect_uri={2}", AUTHORIZE, this.ConsumerKey, url);
    }

  
    public void GetAccessToken(string authToken,string url)
    {
        this.Token = authToken;
        string accessTokenUrl = string.Format("{0}?client_id={1}&redirect_uri={2}&client_secret={3}&code={4}",
        ACCESS_TOKEN, this.ConsumerKey, url, this.ConsumerSecret, authToken);

        string response = WebRequest(Method.GET, accessTokenUrl, String.Empty);

        if (response.Length > 0)
        {
            //Store the returned access_token
            NameValueCollection qs = HttpUtility.ParseQueryString(response);

            if (qs["access_token"] != null)
            {
                this.Token = qs["access_token"];
            }
        }
    }

    public void AccessTokenGet(string authToken)
    {
        this.Token = authToken;
        string accessTokenUrl = string.Format("{0}?client_id={1}&redirect_uri={2}&client_secret={3}&code={4}",
        ACCESS_TOKEN, this.ConsumerKey, CALLBACK_URL, this.ConsumerSecret, authToken);

        string response = WebRequest(Method.GET, accessTokenUrl, String.Empty);

        if (response.Length > 0)
        {
            //Store the returned access_token
            NameValueCollection qs = HttpUtility.ParseQueryString(response);

            if (qs["access_token"] != null)
            {
                this.Token = qs["access_token"];
            }
        }
    }

    /// <summary>
    /// Web Request Wrapper
    /// </summary>
    /// <param name="method">Http Method</param>
    /// <param name="url">Full url to the web resource</param>
    /// <param name="postData">Data to post in querystring format</param>
    /// <returns>The web server response.</returns>
    public string WebRequest(Method method, string url, string postData)
    {

        HttpWebRequest webRequest = null;
        StreamWriter requestWriter = null;
        string responseData = "";

        webRequest = System.Net.WebRequest.Create(url) as HttpWebRequest;
        webRequest.Method = method.ToString();
        webRequest.ServicePoint.Expect100Continue = false;
        webRequest.UserAgent = "[You user agent]";
        webRequest.Timeout = 20000;

        if (method == Method.POST)
        {
            webRequest.ContentType = "application/x-www-form-urlencoded";

            //POST the data.
            requestWriter = new StreamWriter(webRequest.GetRequestStream());

            try
            {
                requestWriter.Write(postData);
            }
            catch
            {
                throw;
            }

            finally
            {
                requestWriter.Close();
                requestWriter = null;
            }
        }

        responseData = WebResponseGet(webRequest);
        webRequest = null;
        return responseData;
    }

    /// <summary>
    /// Process the web response.
    /// </summary>
    /// <param name="webRequest">The request object.</param>
    /// <returns>The response data.</returns>
    public string WebResponseGet(HttpWebRequest webRequest)
    {
        StreamReader responseReader = null;
        string responseData = "";

        try
        {
            responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
            responseData = responseReader.ReadToEnd();
        }
        catch
        {
            throw;
        }
        finally
        {
            webRequest.GetResponse().GetResponseStream().Close();
            responseReader.Close();
            responseReader = null;
        }

        return responseData;
    }
}

-------------------------------------------------------------------------------------

Default.aspx:

now create a signIn button like:
<body>
<input id="btnFBSignIn" type="button" value="Facebook SignIn" onclick="javascript:FBSignIn();"/>
</body>

<script type="text/javascript">
        function FBSignIn() {
            top.location.href = "https://graph.facebook.com/oauth/authorize?client_id=YOURCLIENTID&redirect_uri=YOURREDIRECTURL&scope=publish_stream,email,offline_access";
        }
 </script>

NOTE: your YOURREDIRECTURL must be same as which you have specified while creating app in facebook and OAuthFacebook.cs file.

After that when you will click on this sign in button it will redirect to facebook login and then it will ask for the permissions which you have specified in scope in script if user allow the permission it will redirect to that page which you have specified in your script as well as in OAuthFacebook.cs file.In my case it is callback.aspx.
-----------------------------------------------------------------------------
callback.aspc.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Facebook_Graph_Toolkit.GraphApi;----dont forget to include it.


protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["code"] != null)
        {
            getFacebookProfile();
        }
    }

private void getFacebookProfile()
    {      
    string fullName, facebookId, email, photoPath = "", friendId, friendName;

        oAuthFacebook oAuth = new oAuthFacebook();

        if (Request["code"] == null)
        {

            oAuth.AccessTokenGet(Request["code"]);

        }
        else
        {
            try
            {
                oAuth.AccessTokenGet(Request["code"]);
                Api api = new Api(oAuth.Token);
-------------------------------------------------------
You can get user profile with this user object :

                User u = api.GetUser();
                facebookId = api.UserID;
                fullName = u.first_name + " " + u.last_name;
                email = u.email;
                photoPath = api.GetPictureURL(u.id);
----------------------------------------------------------
user friend list

                IList friends = (IList)api.GetFriends();
                int k = 1;
                foreach (Facebook_Graph_Toolkit.FacebookObjects.NameIDPair pair in friends)
                {
                    friendId = pair.id;
                    friendName = pair.name;
                }
-------------------------------------------------------              
            }
            catch
            {
            }
        }
    }