<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Nick Pinheiro</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/nickpinheiro/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/feed.xml</link>
    <description>Microsoft Azure, Facebook Development, ASP.net, .NET, Mobile Apps &amp;amp; Social</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:47:48 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Introducing the Facebook Solution Framework (FSF) Starter Edition</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/introducing-the-facebook-solution-framework-fsf-starter-edition</link>
      <pubDate>Mon, 02 Apr 2018 17:27:41 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/?p=185</guid>
      <description><![CDATA[I am very pleased to announce the second release in my series of products aimed to assist .NET...]]></description>
      <content:encoded><![CDATA[<a target="_blank" href="https://www.modernappz.com/products/fsf/" rel="noopener"><img width="600" height="315" class="alignleft size-full wp-image-195" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/04/fsf-starter-edition.png" /></a>I am very pleased to announce the second release in my series of products aimed to assist .NET Developers with building apps on the Facebook Platform. Introducing the Facebook Solution Framework (FSF) Starter Edition.

The Facebook Solution Framework (FSF) Starter Edition is a full-featured, mobile-friendly, ASP.NET web application template with core Facebook Platform integration.  Rather than spending countless hours developing an application with Facebook integration from scratch, simply download FSF and get going within minutes!  FSF inlcudes Facebook Login, Graph API integration, it's own SQL Server database project, role-based security and is mobile friendly for use on any device.  In addition FSF is Microsoft Azure ready.  Once you've made your customizations simply deploy your web application to the Azure App Service and you're live!

Download the Facebook Solution Framework (FSF) Starter Edition today at the following URL:
<a target="_blank" href="https://www.modernappz.com/products/fsf" rel="noopener">https://www.modernappz.com/products/fsf</a>]]></content:encoded>
    </item>
    <item>
      <title>Introducing the Facebook Solution Framework (FSF) NuGet Package</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/introducing-the-facebook-solution-framework-fsf-nuget-package</link>
      <pubDate>Thu, 04 Jan 2018 12:15:16 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/?p=155</guid>
      <description><![CDATA[I am very pleased to announce the release of the Facebook Solution Framework (FSF) NuGet...]]></description>
      <content:encoded><![CDATA[<img width="600" height="371" class="alignleft size-full wp-image-176" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/01/nuget.png" />I am very pleased to announce the release of the Facebook Solution Framework (FSF) NuGet package.

The Facebook Solution Framework (FSF) NuGet Package for .NET contains everything you need to build Facebook Apps for web or mobile platforms. Easily integrate Facebook Login, Account Kit (Email / SMS), Graph API, Mutual Friends, Publish Actions, Pages API and more.

You can get started today using the NuGet Package with the associated documentation available at the following location:

<a target="_blank" href="https://www.modernappz.com/products/fsf/nuget/docs/getting-started" rel="noopener">https://www.modernappz.com/products/fsf/nuget/docs/getting-started</a>]]></content:encoded>
    </item>
    <item>
      <title>7 Steps to Getting Started with Facebook App Development</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/7-steps-to-getting-started-with-facebook-app-development</link>
      <pubDate>Sat, 25 Feb 2017 19:24:41 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/?p=125</guid>
      <description><![CDATA[Later this year I will be self-publishing my first book, ‘Facebook App Development with ASP.NET and...]]></description>
      <content:encoded><![CDATA[Later this year I will be self-publishing my first book, ‘Facebook App Development with ASP.NET and Azure’.  The book will provide in-depth coverage of building world-class web and mobile apps that fully leverage the Facebook Platform and Microsoft Technologies.  In preparing to do so I will also be releasing an initial Guide and eBook which will serve as preparatory resources for all readers, but specifically for those starting out on the Facebook Platform.

The guide, ‘7 Steps to Getting Started with Facebook App Development’ has now been published and is available for FREE download on the new service ‘Downloader’.  The following is the direct link for download:

<a target="_blank" href="https://downloader.modernappz.com/nickpinheiro/7-steps-to-getting-started-with-facebook-app-development">https://downloader.modernappz.com/nickpinheiro/7-steps-to-getting-started-with-facebook-app-development</a>

Those who download the guide will also receive early versions of chapters from the upcoming eBook and the full book.

Please feel free to provide any feedback of the guide in the comments here.  I look forward to your review.

<a target="_blank" href="https://downloader.modernappz.com/nickpinheiro/5"><img width="600" height="315" class="alignleft wp-image-135 size-full" src="https://msdnshared.blob.core.windows.net/media/2017/02/7-Steps-OG-Image.png" /> </a>

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

&nbsp;

Other posts in the Facebook Development series:
<ul>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2017/02/25/7-steps-to-getting-started-with-facebook-app-development/">Facebook Login with ASP.NET Web Forms</a></li>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2015/07/07/get-users-email-address-from-facebook-with-asp-net-web-forms/">Get User’s Email Address from Facebook with ASP.NET Web Forms</a></li>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2015/10/28/publish-to-facebook-with-asp-net-web-forms/">Publish to Facebook with ASP.NET Web Forms</a></li>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2016/02/29/automate-posts-to-facebook-fan-page-with-net-and-microsoft-azure/">Automate Posts to Facebook Fan Page with .NET and Microsoft Azure</a></li>
</ul>
<!--more-->

<!--more-->

<!--more-->]]></content:encoded>
    </item>
    <item>
      <title>Automate Posts to Facebook Fan Page with .NET and Microsoft Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/automate-posts-to-facebook-fan-page-with-net-and-microsoft-azure</link>
      <pubDate>Mon, 29 Feb 2016 12:52:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/2016/02/29/automate-posts-to-facebook-fan-page-with-net-and-microsoft-azure/</guid>
      <description><![CDATA[Download the sample project on GitHub  |  Follow me on Twitter at @nickpinheir

Thus far in my...]]></description>
      <content:encoded><![CDATA[<a href="https://www.nick-pinheiro.com" target="_blank"><img class="alignnone size-full wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" alt="Join my mailing list!" width="855" height="100" /></a>

<a href="https://github.com/nickpinheiro/FacebookFanPagePosts" target="_blank">Download the sample project on GitHub</a>  |  <a href="https://www.twitter.com/nickpinheir" target="_blank">Follow me on Twitter at @nickpinheir</a>

Thus far in my Facebook Development blog series we have covered a number of topics.  We have covered <a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/02/28/facebook-login-with-asp-net-web-forms.aspx" target="_blank">Facebook Login</a>, which provides the underpinnings for all subsequent Facebook integration.  We have covered how to <a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/07/07/get-user-s-email-address-from-facebook-with-asp-net-web-forms.aspx" target="_blank">capture a user’s profile information and more importantly their email address</a>.  Furthermore, we have also covered how to <a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/10/28/publish-to-facebook-with-asp-net-web-forms.aspx" target="_blank">programmatically post to a user’s Timeline and to News Feed</a> using the publish_actions permission.  These tools will be of extreme value as you continue on in the process of building, growing and monetizing your apps.

Now as you build out your app, whether web or mobile, a common tool to promote it will be a Facebook Fan Page.  A Fan Page is a publically facing page on Facebook used to build a closer relationship with your audience and customers.  Below is a screenshot of the <a href="https://www.facebook.com/msdvz" target="_blank">Fan Page for ‘MSDevz’</a>, our sample app which will be used throughout the Facebook Development series.  <a href="https://www.msdevz.com/" target="_blank">MSDevz</a> is a social web and mobile app for Microsoft developers that aggregates content from the following providers:  Facebook, Instagram, YouTube, Bing, iTunes and Amazon.

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2500.fb_2D00_fanpage_2D00_1_2D00_2.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2500.fb_2D00_fanpage_2D00_1_2D00_2.png" alt="" border="0" /></a>

One of the core features of MSDevz is the ability to automate the capture of news from the <a href="https://datamarket.azure.com/dataset/bing/search#schema" target="_blank">Azure Data Marketplace’s Bing Search API</a>.  The solution uses an <a href="https://azure.microsoft.com/en-us/documentation/articles/web-sites-create-web-jobs/" target="_blank">Azure WebJob</a> which runs hourly and captures data on Microsoft development news topics.  These article references are then inserted into to MSDev’s <a href="https://azure.microsoft.com/en-us/services/sql-database/" target="_blank">Azure SQL Database</a> and displayed within the app.

Now what if we wanted to take things one step further?  What if we wanted to not only automate the capture of information from the Bing Search API, but also post to MSDev’s Facebook Fan Page each time a new article is added.  To do so we would need to develop a HttpPost to the particular edge (endpoint) of the Facebook Graph API which allows you to publish to a Fan Page.

<strong>Permission</strong>

In order to post to a Facebook Fan Page we will need to generate an ‘page’ access token which includes the publish_pages permission to publish new posts on behalf of that page. Posts will appear in the voice of the page.  Note this a different type of access token from the user access token which we previously received by using Facebook Login.  In order to generate a page access token we will need to use the <a href="https://developers.facebook.com/tools/explorer/" target="_blank">Facebook Graph API Explorer</a> tool.

<strong>Access Token</strong>

Using the tool, under the ‘Applications’ dropdown we must select the Facebook Application we have created in the developer portal (MSDevz).  Directly below in the next dropdown, we select the Fan Page we are requesting a page access token for (MSDevz).  Immediately upon selection, the tool will generate an access token for us in the ‘Access Token’ field.  While this would give us the permissions we need, the generated access token only has a lifespan of one hour.  Therefore, in order to supply our code with a long lived token, we must use the ‘Open in Access Token Tool’ to generate an extended token which will have a lifespan of 60 days.  See screenshots below:

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5226.fb_2D00_fanpage_2D00_2.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5226.fb_2D00_fanpage_2D00_2.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2604.fb_2D00_fanpage_2D00_3.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2604.fb_2D00_fanpage_2D00_3.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5557.fb_2D00_fanpage_2D00_4_2D00_2.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5557.fb_2D00_fanpage_2D00_4_2D00_2.png" alt="" border="0" /></a>

<strong>Graph API</strong>

Now that we have an extended page access token, we are ready to write our code to programmatically post to our Facebook Fan Page.  To do so we will create a ‘Azure WebJob’ project in Visual Studio.  If you do not currently see this as an option in your File &gt; New &gt; Project dialogue, you must install the latest version of the <a href="https://go.microsoft.com/fwlink/?linkid=699285&amp;clcid=0x409" target="_blank">Azure SDK</a>.  At the time of this writing, the latest version of the SDK is 2.8.1.  Note, our code will NOT require an Azure subscription to run, an Azure WebJob project is essentially a console application which can be deployed to Azure.  Therefore, you will be able to debug and run you console application locally in Visual Studio and programmatically post to your Facebook Fan Page.

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/8625.fb_2D00_fanpage_2D00_5.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/8625.fb_2D00_fanpage_2D00_5.png" alt="" border="0" /></a>

Once our project is created, the first thing we will do is open our App.config file and enter settings for our ‘Facebook Page Id’ and our ‘Facebook Page Access Token’:

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6675.fb_2D00_fanpage_2D00_6.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6675.fb_2D00_fanpage_2D00_6.png" alt="" border="0" /></a>

Click save and we are ready to add our code.  For the purposes of this example we will simply generate one programmatic post to our Facebook Fan Page.  Keep in mind that this will be the core of what you will use if you would like to later automate posts.  Simply iterate on your source of content and post to the Facebook Fan Page passing in the relevant parameters.

In order to publish a HttpPost to our Facebook Graph API edge (endpoint), we will use the <a href="https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.118).aspx" target="_blank">.NET HttpClient</a>.  The edge we will be posting to is ‘/{page-id}/feed’.  The following code is all we need to process the post.  The sample project is available on GitHub: <a href="https://github.com/nickpinheiro/FacebookFanPagePosts" target="_blank">https://github.com/nickpinheiro/FacebookFanPagePosts</a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/1106.fb_2D00_fanpage_2D00_7.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/1106.fb_2D00_fanpage_2D00_7.png" alt="" border="0" /></a>

All we need to do now is click ‘Start’ to run the console application.  Provide the post is successfully posted to Facebook in our console window we will receive a response from the Facebook service with the id of the new post:

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5775.fb_2D00_fanpage_2D00_8.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5775.fb_2D00_fanpage_2D00_8.png" alt="" border="0" /></a>

And there we have it!  The following is our Facebook Fan Page post on the MSDevz Fan Page:

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/8836.fb_2D00_fanpage_2D00_9.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/8836.fb_2D00_fanpage_2D00_9.png" alt="" border="0" /></a>

<strong>Download the sample project on GitHub:</strong>
<a href="https://github.com/nickpinheiro/FacebookFanPagePosts" target="_blank">https://github.com/nickpinheiro/FacebookFanPagePosts</a>

<strong>Resources:</strong>
<ul>
	<li>Facebook Graph API Fan Page documentation:
<a href="https://developers.facebook.com/docs/graph-api/reference/v2.5/page/feed" target="_blank">https://developers.facebook.com/docs/graph-api/reference/v2.5/page/feed</a></li>
	<li>Facebook Graph API Explorer
<a href="https://developers.facebook.com/tools/explorer/" target="_blank">https://developers.facebook.com/tools/explorer/</a></li>
	<li>Azure Data Marketplace Bing Search API
<a href="https://datamarket.azure.com/dataset/bing/search#schema" target="_blank">https://datamarket.azure.com/dataset/bing/search#schema</a></li>
	<li>Azure SDK 2.8.1
<a href="https://go.microsoft.com/fwlink/?linkid=699285&amp;amp;clcid=0x409" target="_blank">https://go.microsoft.com/fwlink/?linkid=699285&amp;amp;clcid=0x409</a></li>
	<li>.NET HttpClient
<a href="https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.118).aspx" target="_blank">https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.118).aspx</a></li>
</ul>
<strong>Other posts in the Facebook Development series:</strong>
<ul>
	<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/02/28/facebook-login-with-asp-net-web-forms.aspx" target="_blank">Facebook Login with ASP.NET Web Forms</a></li>
	<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/07/07/get-user-s-email-address-from-facebook-with-asp-net-web-forms.aspx" target="_blank">Get User's Email Address from Facebook with ASP.NET Web Forms</a></li>
	<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/10/28/publish-to-facebook-with-asp-net-web-forms.aspx" target="_blank">Publish to Facebook with ASP.NET Web Forms</a></li>
</ul>
&nbsp;
<table>
<tbody>
<tr>
<td valign="top"> <a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4846.Nick_2D00_Pinheiro_2D002D002D00_Headshot_2D002D002D00_100x100.jpg"><img src="https://blogs.msdn.com/resized-image.ashx/__size/100x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4846.Nick_2D00_Pinheiro_2D002D002D00_Headshot_2D002D002D00_100x100.jpg" alt="" border="0" /></a></td>
<td valign="top">
<div>Nick Pinheiro is an experienced software engineer, technologist, speaker, author and evangelist. He is a Senior Consultant in the Azure Applications Circle of Excellence (CoE) at Microsoft where he develops cloud-based, web and mobile applications for the world’s largest organizations. He speaks at various industry conferences on Modern Apps, Social and Cloud. <a title="Follow him on Twitter at @nickpinheir" href="https://www.twitter.com/nickpinheir" target="_blank">Follow him on Twitter at @nickpinheir</a>.</div></td>
</tr>
</tbody>
</table>
&nbsp;

<a href="https://www.nick-pinheiro.com" target="_blank"><img class="alignnone size-full wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" alt="Join my mailing list!" width="855" height="100" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Publish to Facebook with ASP.NET Web Forms</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/publish-to-facebook-with-asp-net-web-forms</link>
      <pubDate>Wed, 28 Oct 2015 13:01:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/2015/10/28/publish-to-facebook-with-asp-net-web-forms/</guid>
      <description><![CDATA[Download the sample project on GitHub | Follow me on Twitter at @nickpinheir

In a previous...]]></description>
      <content:encoded><![CDATA[<a href="https://www.nick-pinheiro.com" target="_blank"><img class="alignnone size-full wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" alt="Join my mailing list!" width="855" height="100" /></a>

<a title="Download the sample project on GitHub" href="https://github.com/nickpinheiro/FacebookPublishingASPnetWebForms/" target="_blank">Download the sample project on GitHub</a> | <a title="Follow me on Twitter at @nickpinheir" href="https://www.twitter.com/nickpinheir" target="_blank">Follow me on Twitter at @nickpinheir</a>

In a previous post, ‘<a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/02/28/facebook-login-with-asp-net-web-forms.aspx" target="_blank">Facebook Login with ASP.net Web Forms</a>’, I covered <a href="https://en.wikipedia.org/wiki/Social_login" target="_blank">social login</a>, <a href="https://en.wikipedia.org/wiki/OAuth" target="_blank">OAuth</a> and accessing a user’s public profile information.  Following that post I published ‘<a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/07/07/get-user-s-email-address-from-facebook-with-asp-net-web-forms.aspx" target="_blank">Get User's Email Address from Facebook with ASP.net Web Forms</a>’ where I covered the addition of the ‘email’ scope required to request permission to the user’s email address.  Incorporating these core functions into your web app opens the door to a world of possibilities.  You now have the necessary foundation required to truly leverage the many capabilities of the Facebook platform.  In this post I will detail the next most desired integration with Facebook, publishing.  Publishing incudes the ability to post status updates, links, likes, photos, photo albums, videos and more.  While there is much that can be done here, we will focus on the simplest example, posting status updates.  Below is a sample of the result published by the provided sample code:

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2402.6.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2402.6.png" alt="" border="0" /></a>

<strong>Permission</strong>

When we refer to publishing to Facebook, we are referring to publishing an action ‘on the behalf of a user’.  Therefore, it is important to understand that it is your web app which will be permitted by a Facebook user to perform the actual publishing.  This permission will come from the Facebook Login scope of ‘publish_actions’.  If you recall from my previous post, we used the following URL convention to link a user off to the ‘Login with Facebook’ dialog and request their email address:

https://www.facebook.com/dialog/oauth/?client_id=[Your Facebook App Id]&amp;redirect_uri=[Your Redirect URI]&amp;response_type=code&amp;state=1&amp;scope=email

In order for us to request permission to ‘publish_actions’ all we need to do is add one additional query string parameter value to this link.  The value will be ‘publish_actions’.  I have highlighted the addition in green below

https://www.facebook.com/dialog/oauth/?client_id=[Your Facebook App Id]&amp;redirect_uri=[Your Redirect URI]&amp;response_type=code&amp;state=1&amp;scope=email<span style="color: #008000"><strong>,publish_actions</strong></span>

By adding this scope, user’s will now receive the following additional popup the first time they log into Facebook from your app.  Provided they click ‘Okay’ the access token we receive will have this permission.  If they click ‘Not Now’ we will not be able to post on their behalf.

<strong>Access Token</strong>

Provided the user approves your app’s request to publish on their behalf, the resulting access token we request will include this permission.  As a reminder, the OAuth dialogue will provide us a response including a ‘code’ parameter. We use the value of the code parameter to request an access token via the following endpoint:

https://graph.facebook.com/oauth/access_token?client_id=[Your Facebook App Id]&amp;client_secret=[Your Facebook App Secret]&amp;redirect_uri=[Your Redirect URI]&amp;code=[Code Received from Response]

<strong>Login Review</strong>

As of v2.0 of Facebook’s Graph API, Login Review is now required when requesting specific permission scopes such as ‘publish_actions’.  The purpose of this review is to ensure that your app will not be posting to Facebook on behalf of a user without direct interaction by the user.  For example, each time a user enters text into a textfield in your app, the user must know that it will also post to Facebook.  This can be done by providing text directly below your textfield along with a checkbox which states ‘Publish to Facebook’ or by simply adding an approved Facebook logo next to your Submit button.
The Login Review process is quite simple to complete.  Simply navigate to ‘developers.facebook.com’, select your app from the ‘My Apps’ top navigation, on the left navigation select ‘Status &amp; Review’.  Click ‘Start a Submission’ and follow the steps to request ‘publish_actions’.  The process will require you to upload a few screenshots of your forms which post back to Facebook.

<strong>Screenshots of the Publishing Process:</strong>

The following is the sequence of screens your user will run through when you implement the sample code:

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2110.1.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2110.1.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/7888.2.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/7888.2.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4478.3.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4478.3.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2538.4.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/2538.4.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/3554.4_5F00_1.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/3554.4_5F00_1.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6366.5.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6366.5.png" alt="" border="0" /></a>

<a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6354.6.png"><img src="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6354.6.png" alt="" border="0" /></a>

<strong>Download the sample project on GitHub:</strong>
<a href="https://github.com/nickpinheiro/FacebookPublishingASPnetWebForms/" target="_blank">https://github.com/nickpinheiro/FacebookPublishingASPnetWebForms/</a>

<strong>Resources:</strong>
<ul>
	<li>Facebook Graph API: Publishing
<a href="https://developers.facebook.com/docs/graph-api/using-graph-api/#publishing" target="_blank">https://developers.facebook.com/docs/graph-api/using-graph-api/#publishing</a></li>
	<li>Facebook Graph API: Status
<a href="https://developers.facebook.com/docs/graph-api/reference/v2.5/status" target="_blank">https://developers.facebook.com/docs/graph-api/reference/v2.5/status</a></li>
	<li>Facebook Graph API: User Feed
<a href="https://developers.facebook.com/docs/graph-api/reference/v2.5/user/feed" target="_blank">https://developers.facebook.com/docs/graph-api/reference/v2.5/user/feed</a></li>
</ul>
<div>

<strong> Other posts in the Facebook Development series:</strong>
<ul>
	<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/02/28/facebook-login-with-asp-net-web-forms.aspx" target="_blank">Facebook Login with ASP.NET Web Forms</a></li>
	<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/07/07/get-user-s-email-address-from-facebook-with-asp-net-web-forms.aspx" target="_blank">Get User's Email Address from Facebook with ASP.NET Web Forms</a></li>
	<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2016/02/29/facebook-fan-page-post-automation-with-net-and-microsoft-azure.aspx" target="_blank">Automate Posts to Facebook Fan Page with .NET and Microsoft Azure</a></li>
</ul>
&nbsp;
<table>
<tbody>
<tr>
<td valign="top"> <a href="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4846.Nick_2D00_Pinheiro_2D002D002D00_Headshot_2D002D002D00_100x100.jpg"><img src="https://blogs.msdn.com/resized-image.ashx/__size/100x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4846.Nick_2D00_Pinheiro_2D002D002D00_Headshot_2D002D002D00_100x100.jpg" alt="" border="0" /></a></td>
<td valign="top">
<div>Nick Pinheiro is an experienced software engineer, technologist, speaker, author and evangelist. He is a Senior Consultant in the Azure Applications Circle of Excellence (CoE) at Microsoft where he develops cloud-based, web and mobile applications for the world’s largest organizations. He speaks at various industry conferences on Modern Apps, Social and Cloud. <a title="Follow him on Twitter at @nickpinheir" href="https://www.twitter.com/nickpinheir" target="_blank">Follow him on Twitter at @nickpinheir</a>.</div></td>
</tr>
</tbody>
</table>
&nbsp;

<a href="https://www.nick-pinheiro.com" target="_blank"><img class="alignnone size-full wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" alt="Join my mailing list!" width="855" height="100" /></a>

</div>]]></content:encoded>
    </item>
    <item>
      <title>Get User's Email Address from Facebook with ASP.NET Web Forms</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/get-users-email-address-from-facebook-with-asp-net-web-forms</link>
      <pubDate>Tue, 07 Jul 2015 11:28:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/2015/07/07/get-users-email-address-from-facebook-with-asp-net-web-forms/</guid>
      <description><![CDATA[Download the sample project on GitHub | Follow me on Twitter at @nickpinheir

In my previous...]]></description>
      <content:encoded><![CDATA[<a href="https://www.nick-pinheiro.com" target="_blank"><img class="alignnone size-full wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" alt="Join my mailing list!" width="855" height="100" /></a>

<a title="Download the sample project on GitHub" href="https://github.com/nickpinheiro/FacebookLoginASPnetWebForms/tree/email" target="_blank">Download the sample project on GitHub</a> | <a title="Follow me on Twitter at @nickpinheir" href="https://www.twitter.com/nickpinheir" target="_blank">Follow me on Twitter at @nickpinheir</a>

In my previous post, ‘<a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/02/28/facebook-login-with-asp-net-web-forms.aspx" target="_blank">Facebook Login with ASP.net Web Forms</a>’, I covered social login, OAuth and accessing a user’s public profile information.  Incorporating these core functions into your web app opens the door to a world of possibilities.  You now have the necessary foundation required to truly leverage the many capabilities of the Facebook platform.  In this post I will detail how to request and obtain the most valuable piece of user information, the email address.

<strong>Permission</strong>

In order to access a Facebook user’s email address, you must receive permission from the user.  This permission can be obtained either during the <a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/02/28/facebook-login-with-asp-net-web-forms.aspx" target="_blank">Facebook Login</a> process or at the point at which you need the email address in your web app.  If you downloaded the <a href="https://github.com/nickpinheiro/FacebookLoginASPnetWebForms" target="_blank">sample Visual Studio project</a> from my <a href="https://blogs.msdn.com/b/nickpinheiro/archive/2015/02/28/facebook-login-with-asp-net-web-forms.aspx" target="_blank">previous post</a> and dug in a little, you may have noticed the URL the ‘Login with Facebook’ link pointed to.  The link is as follows:

<em>https://www.facebook.com/v2.0/dialog/oauth/?client_id=[Your Facebook App Id]&amp;redirect_uri=[Your Redirect URI]&amp;response_type=code&amp;state=1</em>

In order for us to request permission to the user’s email address all we need to do is add one query string parameter to this link.  The parameter is ‘scope’ and the value will be ‘email’.  I have highlighted the addition in green below:

<em>https://www.facebook.com/v2.0/dialog/oauth/?client_id=[Your Facebook App Id]&amp;redirect_uri=[Your Redirect URI]&amp;response_type=code&amp;state=1&amp;<strong><span style="color: #339966">scope=email</span></strong></em>

<span style="color: #000000">The scope parameter is used to request permission to all non-publicly available properties and actions of the Facebook user.  We’ll see in upcoming posts how to also request permission to post a status update to the user’s timeline using the ‘publish_actions’ scope.</span>

<span style="color: #000000">Believe it or not adding the scope parameter and value is the only addition required to request the user’s email address.  Once we have added scope to the Facebook Login URL we will notice the addition of ‘email address’ in the login dialogue.  As seen in the screenshot below the login dialogue now states “msdevz will receive the following info: your public profile and email address.”</span>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/5543.facebook-email-1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/5543.facebook-email-1.png" alt="" border="0" /></a>

<strong>Access Token</strong>

Provided the user approves your request for their email address the resulting access token we request will include this permission. As a reminder, the OAuth dialogue will provide us a response including a ‘code’ parameter. We use the value of the code parameter to request an access token via the following endpoint:

https://graph.facebook.com/oauth/access_token?client_id=[Your Facebook App Id]&amp;client_secret=[Your Facebook App Secret]&amp;redirect_uri=[Your Redirect URI]&amp;code=[Code Received from Response]

<strong>Graph API</strong>

Now that the user has authorized access to their email address, next we need to make a request to the following Facebook Graph API endpoint which returns the user’s profile information:

https://graph.facebook.com/me?access_token=[User’s Access Token]

The JSON object response we receive will now include the email address. Here’s a screenshot of the response using Fiddler:

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/6232.facebook-email-2.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/6232.facebook-email-2.png" alt="" border="0" /></a>

And here is the resulting page in the sample Visual Studio project:

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/3582.facebook-email-3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/3582.facebook-email-3.png" alt="" border="0" /></a>

And there you have it.  Please let me know in the comments if you have any issue with the concept or with the sample project… would be happy to help.

<strong>Steps in Review:</strong>
<ol>
	<li>User logs into your app using Facebook Login</li>
	<li>User accepts permission request to public profile information and email address</li>
	<li>Exchange code for access token</li>
	<li>Request user’s profile properties now including email address via Graph API</li>
</ol>
<div>Download the sample project on GitHub:
<a href="https://github.com/nickpinheiro/FacebookLoginASPnetWebForms/tree/email" target="_blank">https://github.com/nickpinheiro/FacebookLoginASPnetWebForms/tree/email</a></div>
<div></div>
In my next blog post here in the Facebook Developer series I will discuss how to:
<ul>
	<li>Publish to Facebook with ASP.net Web Forms</li>
</ul>
&nbsp;
<table>
<tbody>
<tr>
<td valign="top"> <a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4846.Nick-Pinheiro_2D002D002D00_Headshot_2D002D002D00_100x100.jpg"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4846.Nick-Pinheiro_2D002D002D00_Headshot_2D002D002D00_100x100.jpg" alt="" border="0" /></a></td>
<td valign="top">
<div style="padding-left: 15px">Nick Pinheiro is an experienced software engineer, technologist, speaker, author and evangelist. He is a Senior Consultant in the Azure Applications Circle of Excellence (CoE) at Microsoft where he develops cloud-based, web and mobile applications for the world’s largest organizations. He speaks at various industry conferences on Modern Apps, Social and Cloud. <a title="Follow him on Twitter at @nickpinheir" href="https://www.twitter.com/nickpinheir" target="_blank">Follow him on Twitter at @nickpinheir</a>.</div></td>
</tr>
</tbody>
</table>
&nbsp;

<a href="https://www.nick-pinheiro.com" target="_blank"><img class="alignnone size-full wp-image-123" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" alt="Join my mailing list!" width="855" height="100" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Facebook Login with ASP.NET Web Forms</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/facebook-login-with-asp-net-web-forms</link>
      <pubDate>Sat, 28 Feb 2015 10:12:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/2015/02/28/facebook-login-with-asp-net-web-forms/</guid>
      <description><![CDATA[01/04/18 - Facebook Login should now be implemented using the new 'Facebook Solution Framework...]]></description>
      <content:encoded><![CDATA[<a target="_blank" href="https://www.nick-pinheiro.com" rel="noopener"><img width="855" height="100" class="alignnone size-full wp-image-123" alt="Join my mailing list!" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" /></a>

01/04/18 - Facebook Login should now be implemented using the new 'Facebook Solution Framework (FSF) NuGet Package for .NET'.   Documentation for the NuGet Package can be found at:
<a target="_blank" href="https://www.modernappz.com/products/fsf/nuget/" rel="noopener">https://www.modernappz.com/products/fsf/nuget/ </a>

&nbsp;

02/28/15 - One of the core functions of any modern app is the ability to leverage Social Authentication (also known as Social Login).  <a target="_blank" href="https://en.wikipedia.org/wiki/Social_login" rel="noopener">Social login</a> is a form of single sign-on using existing login information from an identity provider such as Facebook, Twitter, Google or Microsoft to sign into a third party website or app in lieu of creating a new login account specifically for that app.  The mechanism is designed to simplify logins for end users as well as provide more reliable demographic information to developers.

Under the covers, Social login is actually powered by <a target="_blank" href="https://en.wikipedia.org/wiki/OAuth" rel="noopener">OAuth</a>.  OAuth is an open standard for authorization.  OAuth provides client applications 'secure delegated access’ to server resources on behalf of a resource owner. It specifies a process for resource owners to authorize third-party access to their server resources without sharing their credentials. Designed specifically to work with Hypertext Transfer Protocol (HTTP), OAuth essentially allows access tokens to be issued to third-party clients by an authorization server, with the approval of the resource owner, or end-user. The client then uses the access token to access the protected resources hosted by the resource server.  OAuth is commonly used as a way for web surfers to log into third party web sites using their Facebook, Twitter, Google or Microsoft accounts, without worrying about their access credentials being compromised.

Years ago, when I first began working with Social Login and OAuth, I found the concept to be somewhat complicated and difficult to implement from scratch.  I attempted using third party libraries such as the <a target="_blank" href="https://facebooksdk.net/" rel="noopener">Facebook SDK for .NET</a> however it did not assist me in truly understanding the underlying concept.  After much research on the topic I discovered the following graphic which I found to be quite helpful:

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/7701.facebook-login-1.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/7701.facebook-login-1.png" border="0" /></a>

The more I worked to understand it, the more I realized that it is simply just a series of calls to various endpoints (URIs) which in sequence gets me to the expected result.

As I went about deciding which identity provider to use it was initially obvious that the one with the largest number of users would make the most sense.  If I’m building an app for the masses, then I want to make sure that I provide users with the easiest way for them to login to my app.  Therefore the obvious choice was Facebook which currently has approximately 1.3 billion active users.

According to identity management platform <a target="_blank" href="https://blog.gigya.com/the-landscape-of-customer-identity-facebook-dominates-mobile/" rel="noopener">Gigya</a>, for the first time since 2011, Facebook has surpassed the 60 percent mark and powered 61 percent of all social logins on Gigya’s network in the last quarter of 2014 (up from 58 percent in the previous quarter and up 10 percent from a year ago).

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/3704.facebook-login-2.png"><img width="300" alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/3704.facebook-login-2.png" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4130.facebook-login-3.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4130.facebook-login-3.png" border="0" /></a>

This made the decision to implement Social Login with Facebook a no-brainer.  Once this decision was made I set out to find any code samples online that used ASP.net and even more specifically Web Forms.  I quickly discovered that a simple, straight forward example simply did not exist.  As of Visual Studio 2013 the option to create a new ASP.net Web Application project using ‘individual user accounts’ from social identity providers became available however, again, this did not lend to the level of control I was looking for.

Without searching much further I took on the task of doing this myself and have now also created a sample project which you can download and incorporate into your app.

The sample project does the following:
<ol>
 	<li>Authenticates the user via Facebook</li>
 	<li>Makes a requests to Facebook for the user’s public profile information</li>
 	<li>Display the user’s information</li>
</ol>
Before you use the following sample you must create a Facebook application. To do so navigate to <a target="_blank" href="https://developers.facebook.com/apps" rel="noopener">https://developers.facebook.com/apps</a> and click the '+ Add a New App' button. Follow the steps to create an app and record your AppId and AppSecret.

Once you have your AppId and AppSecret all you need to do is following:
<ol>
 	<li>Download the project from GitHub</li>
 	<li>Open the project in Visual Studio</li>
 	<li>Open the Web.config and add your AppId and AppSecret in the &lt;appSettings&gt; section</li>
 	<li>Run the project.</li>
</ol>
This is the result you should get:

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4263.facebook-login-4.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4263.facebook-login-4.png" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4606.facebook-login-4-1.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4606.facebook-login-4-1.png" border="0" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/6874.facebook-login-5.png"><img alt="" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/6874.facebook-login-5.png" border="0" /></a>

The following is the core logic:

<script src="https://gist.github.com/nickpinheiro/dd1e55fe46b25afa9d70.js" type="text/javascript"></script>

And there you have it.  Please let me know in the comments if you have any issue with concept or with the sample project… would be happy to help.

In upcoming blog posts I will discuss how to:
<ul>
 	<li>Request additional information from facebook that requires user permissions such as ‘email address’ and ‘location’.</li>
 	<li>Submit posts back to facebook on behalf of the user</li>
</ul>
Download the full source code on GitHub:
<a target="_blank" href="https://github.com/nickpinheiro/FacebookLoginASPnetWebForms" rel="noopener">https://github.com/nickpinheiro/FacebookLoginASPnetWebForms</a>

Additional Resources:
<ul>
 	<li><a href="https://en.wikipedia.org/wiki/Social_login">https://en.wikipedia.org/wiki/Social_login</a></li>
 	<li><a target="_blank" href="https://en.wikipedia.org/wiki/OAuth" rel="noopener">https://en.wikipedia.org/wiki/OAuth</a></li>
 	<li><a target="_blank" href="https://www.facebooksdk.net" rel="noopener">https://www.facebooksdk.net</a></li>
 	<li><a target="_blank" href="https://www.asp.net/visual-studio/overview/2013/creating-web-projects-in-visual-studio#auth" rel="noopener">https://www.asp.net/visual-studio/overview/2013/creating-web-projects-in-visual-studio#auth</a></li>
 	<li><a target="_blank" href="https://blog.gigya.com/the-landscape-of-customer-identity-facebook-dominates-mobile/" rel="noopener">https://blog.gigya.com/the-landscape-of-customer-identity-facebook-dominates-mobile/</a></li>
</ul>
Other posts in the Facebook Development series:
<ul>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2017/02/25/7-steps-to-getting-started-with-facebook-app-development/" rel="noopener">7 Steps to Getting Started with Facebook App Development</a></li>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2015/07/07/get-users-email-address-from-facebook-with-asp-net-web-forms/" rel="noopener">Get User’s Email Address from Facebook with ASP.NET Web Forms</a></li>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2015/10/28/publish-to-facebook-with-asp-net-web-forms/" rel="noopener">Publish to Facebook with ASP.NET Web Forms</a></li>
 	<li><a target="_blank" href="https://blogs.msdn.microsoft.com/nickpinheiro/2016/02/29/automate-posts-to-facebook-fan-page-with-net-and-microsoft-azure/" rel="noopener">Automate Posts to Facebook Fan Page with .NET and Microsoft Azure</a></li>
</ul>
Don’t miss a thing…
<ul>
 	<li><a target="_blank" href="https://blogs.msdn.com/b/nickpinheiro/rss.aspx" rel="noopener">Subscribe to my blog</a></li>
 	<li><a target="_blank" href="https://www.twitter.com/nickpinheir" rel="noopener">Follow me on Twitter </a>for daily posts related to Modern Apps, Microsoft Azure &amp; Entrepreneurship</li>
 	<li><a target="_blank" href="https://www.linkedin.com/in/nickpinheiro" rel="noopener">Connect with me on LinkedIn</a></li>
 	<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2012/09/06/about-nick-pinheiro.aspx">About Me</a></li>
</ul>
<a target="_blank" href="https://www.nick-pinheiro.com" rel="noopener"><img width="855" height="100" class="alignnone size-full wp-image-123" alt="Join my mailing list!" src="https://msdnshared.blob.core.windows.net/media/2015/02/nick-join.png" /></a>]]></content:encoded>
    </item>
    <item>
      <title>Build a SharePoint Hosted App to access list data in your Host Web using the REST API in 10 Easy Steps</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/build-a-sharepoint-hosted-app-to-access-list-data-in-your-host-web-using-the-rest-api-in-10-easy-steps</link>
      <pubDate>Fri, 30 Jan 2015 10:58:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/2015/01/30/build-a-sharepoint-hosted-app-to-access-list-data-in-your-host-web-using-the-rest-api-in-10-easy-steps/</guid>
      <description><![CDATA[One of the most widely used features of SharePoint Online is the ability to create and easily store...]]></description>
      <content:encoded><![CDATA[<p>One of the most widely used features of SharePoint Online is the ability to create and easily store data in a list.&nbsp; In just a few clicks you are able to create a data store which is integrated with various actions: creating views, sharing, following, managing permissions, running workflows, exporting to Excel, opening with Access, alerts and the list goes on.</p>
<p>As you can imagine, organizations quickly adopt this methodology for storing data and managing tasks.&nbsp; &lsquo;Out of the Box&rsquo; SharePoint also provides various web parts for displaying data in your lists on pages: List View Web Part, Content Query Web Part, Content Search Web Part, etc.</p>
<p>Now what it if you wanted to aggregate your list data with data from an external data source such as a RSS feed or data API, and display them together on a SharePoint page?&nbsp; How would you go about this?</p>
<p>My current client, who has recently migrated their intranet over to Office 365, had this exact request.&nbsp; They wanted to display their most recent internal blog posts from SharePoint blogs along with their external blog posts form their publicly-facing website.&nbsp; One thing to keep in mind is that pretty much everything in SharePoint is in its most basic form &lsquo;a list&rsquo;.&nbsp; Therefore this would just be a matter of querying the list programmatically as well as querying the associated external feeds.&nbsp; Now if you search online for this type of solution you&rsquo;ll find that it will be very difficult to find a straight forward example.&nbsp; Most of the examples will reference accessing data from a list that is in your &lsquo;app web&rsquo; which is the web that houses your new SharePoint App.&nbsp; This is not the same as data that is in your &lsquo;host web&rsquo; which is your actual Team or Publishing site for example.</p>
<p>For this example I&rsquo;ll simulate this scenario by creating a blog in SharePoint Online and retrieving the data.&nbsp; You can then easily add the logic to access your external blog posts.</p>
<p>These are the technologies we&rsquo;ll use to do it:</p>
<ul>
<li>SharePoint Hosted App</li>
<li>SharePoint REST API</li>
<li>JavaScript</li>
<li>jQuery</li>
</ul>
<p>&nbsp;I&rsquo;ll provide the full source code in GitHub however if you would like to reproduce this from scratch simply follow the following 10 easy steps:</p>
<p>1. <a title="Sign up for an Office 365 Developer Trial" href="https://portal.microsoftonline.com/Signup/MainSignUp.aspx?OfferId=6881A1CB-F4EB-4db3-9F18-388898DAF510&amp;DL=DEVELOPERPACK" target="_blank">Sign up for an Office 365 Developer Trial</a>:</p>
<p>I have done so and the following is my Office 365 tenant.&nbsp; I have named my tenant &lsquo;Modern Appz&rsquo; which is what I use for my various personal projects.</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/8345.blog1.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/8345.blog1.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/8345.blog1.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/8345.blog1.png" alt="" border="0" /></a></p>
<p>2. Create a Blog site below your Team Site:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0815.blog3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0815.blog3.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0815.blog3.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0815.blog3.png" alt="" border="0" /></a></p>
<p>3. &nbsp;Next we&rsquo;ll need to create a SharePoint Hosted App Project in Visual Studio. &nbsp;I&rsquo;m using Visual Studio 2013 Update 4:</p>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/6180.blog4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6180.blog4.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/6180.blog4.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/6180.blog4.png" alt="" border="0" /></a></div>
<div>&nbsp;</div>
<p>4. &nbsp;Add your new SharePoint site (https://modernappz.sharepoint.com) and leave the app setting to &lsquo;SharePoint-hosted&rsquo;:</p>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/1817.blog5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/1817.blog5.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/1817.blog5.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/1817.blog5.png" alt="" border="0" /></a></div>
<p>&nbsp;</p>
<p>5. &nbsp;Sign in with your Office 365 account:</p>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0876.blog6.png" original-url="https://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0876.blog6.png"><img style="max-width: 550px;" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0876.blog6.png" original-url="https://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0876.blog6.png" alt="" border="0" /></a></div>
<div>&nbsp;</div>
<p>6. &nbsp;Your project is now created and you are now ready to implement your custom code:</p>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0451.blog7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0451.blog7.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0451.blog7.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0451.blog7.png" alt="" border="0" /></a></div>
<div>&nbsp;</div>
<p>7. &nbsp;Next we need to add a Client Web Part to our project which will serve as the &lsquo;App Part&rsquo; that we will eventually add to our SharePoint page:</p>
<div><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/5050.blog8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5050.blog8.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/5050.blog8.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5050.blog8.png" alt="" border="0" /></a></div>
<p>&nbsp;</p>
<p>8. &nbsp;Replace the code in the newly created &lsquo;ClientWebPartBlogs.aspx&rsquo; page in you &lsquo;Pages&rsquo; folder with the following:</p>
<script type="text/javascript" src="https://gist.github.com/nickpinheiro/646832af69b3743d9787.js"></script>
<p>9. &nbsp;Now here&rsquo;s the secret sauce to all of this. &nbsp;In order for your app to read data from the host web, you need to provide the app with read permissions to the site collection. &nbsp;To do so double-click on your AppManifest, click the &lsquo;Permissions&rsquo; tab and set it to the following:</p>
<p>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/5417.blog9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5417.blog9.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/5417.blog9.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/5417.blog9.png" alt="" border="0" /></a></p>
<p>10. &nbsp;We are now ready to deploy our new app to our site collection. &nbsp;Simply right click the root of your project in Visual Studio and click &lsquo;Deploy&rsquo;. &nbsp;Once the installation is completed you will be presented with this screen. &nbsp;By clicking &lsquo;Trust It&rsquo; you confirm that you would like to provide the app with read permissions to the host web (site collection).</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4861.blog10.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4861.blog10.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4861.blog10.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4861.blog10.png" alt="" border="0" /></a></p>
<p>After you have trusted the app simply add the &lsquo;App Part&rsquo; to your page and here you have it my friends. &nbsp;This serves the basis for all list queries you will need to make from your host web :).&nbsp;</p>
<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4237.blog11.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4237.blog11.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/4237.blog11.png" original-url="https://blogs.msdn.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/4237.blog11.png" alt="" border="0" /></a></p>
<p>Download the full source code on GitHub:<br /><a href="https://github.com/nickpinheiro/SharePointAppListData" target="_blank">https://github.com/nickpinheiro/SharePointAppListData</a></p>
<p>&nbsp;Additional Resources:</p>
<ul>
<li><a title="REST API reference and samples" href="https://msdn.microsoft.com/en-us/library/office/jj860569(v=office.15).aspx" target="_blank">REST API reference and samples</a></li>
<li><a title="Working with SharePoint list data - OData, REST and JavaScript" href="https://blogs.technet.com/b/fromthefield/archive/2013/09/05/working-with-sharepoint-list-data-odata-rest-and-javascript.aspx" target="_blank">Working with SharePoint list data - OData, REST and JavaScript</a></li>
<li><a title="SharePoint 2013 &amp;ndash; CRUD on List Items Using REST Services &amp;amp; jQuery" href="https://www.plusconsulting.com/blog/2013/05/crud-on-list-items-using-rest-services-jquery/" target="_blank">SharePoint 2013 &ndash; CRUD on List Items Using REST Services &amp; jQuery</a></li>
<li><a title="Use OData query operations in SharePoint REST requests" href="https://msdn.microsoft.com/en-us/library/office/fp142385(v=office.15).aspx#bk_supported" target="_blank">Use OData query operations in SharePoint REST requests</a></li>
</ul>
<p>Don&rsquo;t miss a thing&hellip;</p>
<ul>
<li><a href="https://blogs.msdn.com/b/nickpinheiro/rss.aspx" target="_blank">Subscribe to my blog</a></li>
<li><a href="https://www.twitter.com/nickpinheir" target="_blank">Follow me on Twitter </a>for daily posts related to Modern Apps, Microsoft Azure &amp; Entrepreneurship</li>
<li><a href="https://www.linkedin.com/in/nickpinheiro" target="_blank">Connect with me on LinkedIn</a></li>
<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2012/09/06/about-nick-pinheiro.aspx">About Me</a></li>
</ul>
<p><br />&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>eBook: Delivering Modern Apps as a Service with Microsoft Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/ebook-delivering-modern-apps-as-a-service-with-microsoft-azure</link>
      <pubDate>Sat, 10 Jan 2015 15:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/2015/01/10/ebook-delivering-modern-apps-as-a-service-with-microsoft-azure/</guid>
      <description><![CDATA[Happy New Year!&nbsp; As you may have noticed I&rsquo;ve been on a bit of a hiatus from blogging...]]></description>
      <content:encoded><![CDATA[<p>Happy New Year!&nbsp; As you may have noticed I&rsquo;ve been on a bit of a hiatus from blogging over the past year or two.&nbsp; However, I think I have very good reason.&nbsp;&nbsp; Over the last few years I have been actively working on building a SaaS (Software as a Service) based solution on Microsoft Azure.&nbsp; I&rsquo;m now preparing to launch this service as a startup and have decided to take my readers along for the ride.&nbsp; More importantly I documented the process I took to build this service and will be releasing it first as a blog series and subsequently as a complete eBook.&nbsp; The following is an early draft of the cover as well as the table of contents:</p>
<table border="0">
<tbody>
<tr>
<td><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0042.eBook_Delivering_Modern_Apps_as_a_Service_with_Microsoft_%20Azure.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0042.eBook_5F00_Delivering_5F00_Modern_5F00_Apps_5F00_as_5F00_a_5F00_Service_5F00_with_5F00_Microsoft_5F00_-Azure.png"><img src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/51/59/0042.eBook_Delivering_Modern_Apps_as_a_Service_with_Microsoft_%20Azure.png" original-url="https://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-51-59/0042.eBook_5F00_Delivering_5F00_Modern_5F00_Apps_5F00_as_5F00_a_5F00_Service_5F00_with_5F00_Microsoft_5F00_-Azure.png" alt="" width="300" border="0" /></a></td>
<td valign="top"><ol>
<li>Defining the Modern App</li>
<li>Microsoft Azure and PaaS</li>
<li>What makes an App 'Social'</li>
<li>Creating Modern Apps with Social</li>
<li>Social Authentication and Identity</li>
<li>Delivering your App as a Service</li>
<li>Single Tenant vs Multi-Tenant Architecture</li>
<li>Onboarding new Subscribers</li>
<li>Subscriptions and Payment</li>
<li>Provisioning your App and Backend</li>
<li>Storage Options</li>
<li>Configuration</li>
<li>Going Mobile with Xamarin</li>
<li>Azure Mobile Services</li>
<li>Case Study: 'Modern Appz'&nbsp;</li>
</ol></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Every two weeks I will publish a blog post with a subsection of each chapter and will prefix the post with &lsquo;Modern Apps: [Topic]&rsquo;. &nbsp;I will also publish the associated source code to GitHub. &nbsp;The complete end to end process, diagrams, source code and related resources will be in the published eBook entitled: &lsquo;Delivering Modern Apps as a Service on Microsoft Azure&rsquo;.</p>
<p>I look forward to interacting with my readers. &nbsp;Please feel free to comment, share your feedback or ask any question at all. &nbsp;Remember, no question is a dumb question&hellip; we all had to start the learning process somewhere.</p>
<p>Don&rsquo;t miss a thing&hellip;</p>
<ul>
<li><a href="https://blogs.msdn.com/b/nickpinheiro/rss.aspx" target="_blank">Subscribe to my blog</a></li>
<li><a href="https://www.twitter.com/nickpinheir" target="_blank">Follow me on Twitter </a>for daily posts related to Modern Apps, Microsoft Azure &amp; Entrepreneurship</li>
<li><a href="https://www.linkedin.com/in/nickpinheiro" target="_blank">Connect with me on LinkedIn</a></li>
<li><a href="https://blogs.msdn.com/b/nickpinheiro/archive/2012/09/06/about-nick-pinheiro.aspx">About Me</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>Product Line Architecture (PLA) Team Blog Released (Currently for SharePoint 2013, Exchange 2013 &amp; Lync 2013)</title>
      <link>https://docs.microsoft.com/archive/blogs/nickpinheiro/product-line-architecture-pla-team-blog-released-currently-for-sharepoint-2013-exchange-2013-lync-2013</link>
      <pubDate>Tue, 09 Apr 2013 15:11:00 GMT</pubDate>
      <dc:creator><![CDATA[Nick Pinheiro]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/nickpinheiro/2013/04/09/product-line-architecture-pla-team-blog-released-currently-for-sharepoint-2013-exchange-2013-lync-2013/</guid>
      <description><![CDATA[If over the years you've researched best practices for deploying one of our technologies into your...]]></description>
      <content:encoded><![CDATA[<p>If over the years you've researched best practices for deploying one of our technologies into your own Enterprise, Small Business or the like and have asked, "How would Microsoft deploy this technology?" or "how would Microsoft do it?", &nbsp;you will now soon have access to the answer.&nbsp; Microsoft is in the process of introducing the Produce Line Architectures for the following Productivity based technologies: SharePoint 2013, Exchange 2013 and Lync 2013.&nbsp; Currently these&nbsp;are in CTP release (Community Technology Preview) only through Microsoft Services.</p>
<p>Today, the PLA Team has released their official blog which will serve as the public interface for core technical guidance, general availability and various other bits of information along the way.&nbsp; You can access the blog and subscribe to the RSS feed at the URL below:<br /><a href="https://blogs.technet.com/b/pla/">https://blogs.technet.com/b/pla/</a></p>
<p>Snippet from the first blog post:</p>
<p style="padding-left: 30px;">What exactly is a PLA</p>
<p style="padding-left: 30px;">The PLA at its most fundamental level is a prescriptive, well-defined architecture that provides variability through boundaries that are provided in the form of rules or constraints. It is built with an underlying framework in mind and takes a "configure first" versus customize approach to ensure deployments are consistent, repeatable and supportable. Think of it as a "directed-design" that encapsulates the collective Microsoft knowledge into a format that delivery teams can leverage to reduce the complexity and increase the delivery quality.</p>
<p>Feel free to post any questions you may have about the PLA in the comments section below.</p>
<p>&nbsp;</p>
<p style="padding-left: 30px;">&nbsp;</p>
<p style="padding-left: 30px;">&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>