feed_parser 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,6 +21,7 @@ class FeedParser
21
21
  {
22
22
  :title => "/feed/title",
23
23
  :url => "/feed/link[@rel='self']",
24
+ :alternate_url => "/feed/link[@rel='alternate']",
24
25
  :item => "/feed/entry",
25
26
  :item_guid => "id",
26
27
  :item_link => "link",
@@ -17,9 +17,10 @@ class FeedParser
17
17
  def url
18
18
  _url = case @type
19
19
  when :rss
20
- @feed.xpath(Dsl[@type][:url]) && @feed.xpath(Dsl[@type][:url])
20
+ @feed.xpath(Dsl[@type][:url])
21
21
  when :atom
22
- @feed.xpath(Dsl[@type][:url]).attribute("href")
22
+ @feed.xpath(Dsl[@type][:url]).first && @feed.xpath(Dsl[@type][:url]).attribute("href") ||
23
+ @feed.xpath(Dsl[@type][:alternate_url]).first && @feed.xpath(Dsl[@type][:alternate_url]).attribute("href")
23
24
  else
24
25
  nil
25
26
  end
data/lib/feed_parser.rb CHANGED
@@ -3,7 +3,7 @@ require 'nokogiri'
3
3
 
4
4
  class FeedParser
5
5
 
6
- VERSION = "0.2.4"
6
+ VERSION = "0.2.5"
7
7
 
8
8
  USER_AGENT = "Ruby / FeedParser gem"
9
9
 
@@ -8,8 +8,8 @@ end
8
8
 
9
9
  describe FeedParser do
10
10
  describe FeedParser::Feed, "#new" do
11
- def feed_xml
12
- File.read(File.join(File.dirname(__FILE__), 'fixtures', 'nodeta.rss.xml'))
11
+ def feed_xml(filename = 'nodeta.rss.xml')
12
+ File.read(File.join(File.dirname(__FILE__), 'fixtures', filename))
13
13
  end
14
14
 
15
15
  def http_connection_options
@@ -46,6 +46,14 @@ describe FeedParser do
46
46
  FeedParser::Feed.new("https://example.com/feed")
47
47
  }.should raise_error(RuntimeError, "redirection forbidden: https://example.com/feed -> http://example.com/feed")
48
48
  end
49
+
50
+ it "should use alternate url if there is no valid self url in the received feed xml" do
51
+ FeedParser::Feed.any_instance.should_receive(:open).with("https://developers.facebook.com/blog/feed", http_connection_options).and_return(feed_xml('facebook.atom.xml'))
52
+ lambda {
53
+ feed = FeedParser::Feed.new("https://developers.facebook.com/blog/feed")
54
+ feed.url.should == "https://developers.facebook.com/blog/feed"
55
+ }.should_not raise_error
56
+ end
49
57
  end
50
58
 
51
59
  describe "#parse" do
@@ -0,0 +1,660 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <feed xmlns="http://www.w3.org/2005/Atom">
3
+ <title type="text">Facebook Developer Blog</title>
4
+ <updated>2011-12-30T17:00:00Z</updated>
5
+ <id>urn:uuid:6c306ca7-ff0b-4f7a-b371-92964eac0f14</id>
6
+ <link href="https://developers.facebook.com/blog/feed" rel="alternate" type="text/html"/>
7
+ <author><name>Facebook</name></author>
8
+ <entry>
9
+ <title type="text">Facebook Platform SDK Support </title>
10
+ <updated>2011-12-30T17:00:00Z</updated>
11
+ <id>urn:uuid:210268602391001</id>
12
+ <link href="http://developers.facebook.com/blog/post/624/" rel="alternate" type="text/html"/>
13
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p>Over the last few weeks, we have had several questions from developers as to which SDKs we support. We wanted to clarify that we provide support for the following:</p>
14
+
15
+ <ul>
16
+ <li><strong>JavaScript SDK</strong>: <a href="https://github.com/facebook/facebook-js-sdk">source</a> &amp; <a href="https://developers.facebook.com/docs/reference/javascript/">documentation</a></li>
17
+ <li><strong>PHP SDK</strong>: <a href="https://github.com/facebook/facebook-php-sdk">source</a> &amp; <a href="https://developers.facebook.com/docs/reference/php/">documentation</a></li>
18
+ <li><strong>iOS SDK</strong>: <a href="https://github.com/facebook/facebook-ios-sdk">source</a> &amp; <a href="https://developers.facebook.com/docs/reference/iossdk/">documentation</a></li>
19
+ <li><strong>Android SDK</strong>: <a href="https://github.com/facebook/facebook-android-sdk">source</a> &amp; <a href="https://developers.facebook.com/docs/reference/androidsdk/">documentation</a></li>
20
+ </ul>
21
+
22
+ <p>Please note that we are moving the location of the JavaScript SDK repository from <a href="https://github.com/facebook/connect-js">connect-js</a> to <a href="https://github.com/facebook/facebook-js-sdk">facebook-js-sdk</a> and the location of the PHP SDK from <a href="https://github.com/facebook/php-sdk">php-sdk</a> to <a href="https://github.com/facebook/facebook-php-sdk">facebook-php-sdk</a>. Only the new repositories will be updated moving forward and the old repositories will be made private on April 1, 2012.</p>
23
+
24
+ <p><strong>Reporting Issues</strong></p>
25
+
26
+ <p>To report any bugs or issues with any of the above SDKs, please file a report in our <a href="https://developers.facebook.com/bugs">Bugs Tool</a>. We apologize for confusion caused by the Issues tabs in GitHub. We do not provide support for this channel and have since removed them from all of our GitHub repositories. We now have a dedicated team of engineers devoted to supporting developers and responding every day to bugs opened via our <a href="https://developers.facebook.com/bugs">Bugs Tool</a></p>
27
+
28
+ <p><strong>Cookies used by the SDKs</strong></p>
29
+
30
+ <p>Our JavaScript and PHP SDKs support a common cookie format that allows you to access Facebook Platform from both client and server side code in a seamless fashion. Previously, we documented this cookie format. This resulted in many apps and SDKs taking a dependency on it. We would like to consider this cookie format to be an implementation detail so that we can make changes for security or other reasons, and advise apps not to take a direct dependency on the format. Rather than attempting to parse our cookies, we recommend that you use one of the above supported SDKs or use OAuth endpoints to directly authenticate and authorize users. Our <a href="https://developers.facebook.com/docs/authentication/">Authentication Guide</a> highlights how to perform authentication and authorization directly.</p>
31
+
32
+ <p><strong>Deprecated SDKs</strong></p>
33
+
34
+ <p>Throughout this past year, we have deprecated or removed the below SDKs. The fact that we no longer provide an official Facebook SDK for a given language/runtime, does not mean that you cannot write Facebook apps using those technologies. Rather, all of Facebook Platform (Graph API, Dialogs, etc.) can be accessed from any language or runtime with an HTTP library in a simple and straightforward way. In fact, many of our developers forgo our official SDKs completely and just use HTTP. We are simply deprecating these SDKs based on our need to reduce surface area and provide better support. We have no doubt that the various developer communities will create Facebook SDKs for these platforms over time.</p>
35
+
36
+ <ul>
37
+ <li><a href="https://github.com/facebook/python-sdk">Python SDK</a>: The Python SDK is deprecated. We intend on making the GitHub repository private on April 1, 2012.</li>
38
+ <li><a href="https://github.com/facebook/csharp-sdk">C# SDK</a>: The C# SDK is deprecated. The GitHub repository will be made private on April 1, 2012.</li>
39
+ <li><a href="https://github.com/facebook/facebook-iphone-sdk">Facebook iPhone SDK</a>: This SDK is deprecated and replaced by the <a href="https://github.com/facebook/facebook-ios-sdk">iOS SDK</a>. We have made the repository private.</li>
40
+ </ul>
41
+
42
+ <p>Please leave any questions or feedback in the comments below.</p>
43
+ </div>]]></content>
44
+ </entry>
45
+ <entry>
46
+ <title type="text">2011 In Review</title>
47
+ <updated>2011-12-29T10:00:00Z</updated>
48
+ <id>urn:uuid:305027782869835</id>
49
+ <link href="http://developers.facebook.com/blog/post/623/" rel="alternate" type="text/html"/>
50
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p>As we near the end of 2011, we wanted to take a moment to recap the highlights from this year. Before doing so, we want to thank you for creating social apps that have delighted millions of users. From <a href="https://developers.facebook.com/showcase/games/">games</a> to <a href="https://developers.facebook.com/blog/post/603/">news</a>, and <a href="https://developers.facebook.com/blog/post/594/">music</a>, we were excited and impressed by what you created this year. We cannot wait to see what we can build together in 2012.</p>
51
+
52
+ <p><strong>New Products</strong></p>
53
+
54
+ <p>We launched many new features that enabled more social and engaging user experiences:</p>
55
+
56
+ <ul>
57
+ <li><a href="https://developers.facebook.com/blog/post/472/">Comments Plugin</a> and <a href="https://developers.facebook.com/blog/post/490/">API</a></li>
58
+ <li><a href="https://developers.facebook.com/blog/post/494/">Send Button</a> and <a href="https://developers.facebook.com/blog/post/514/">Dialog</a></li>
59
+ <li><a href="https://developers.facebook.com/blog/post/609/">Subscribe Button</a></li>
60
+ <li>New Insights (<a href="https://developers.facebook.com/blog/post/476/">Distribution</a>, <a href="https://developers.facebook.com/blog/post/521/">Spam</a>, <a href="https://developers.facebook.com/blog/post/537/">Credits</a>, and <a href="https://developers.facebook.com/blog/post/573/">Page</a>) </li>
61
+ <li><a href="https://developers.facebook.com/blog/post/549/">Fluid Canvas</a></li>
62
+ <li><a href="https://developers.facebook.com/blog/post/539/">Scores and Achievements API</a></li>
63
+ <li><a href="https://developers.facebook.com/blog/post/564/">Open Graph</a> and <a href="https://developers.facebook.com/blog/post/563/">Timeline</a></li>
64
+ <li><a href="https://developers.facebook.com/blog/post/575/">Social App Discovery on Mobile</a></li>
65
+ </ul>
66
+
67
+ <p><strong>New Tools for Developers</strong></p>
68
+
69
+ <p>We focused on building new tools to help you develop apps more efficiently:</p>
70
+
71
+ <ul>
72
+ <li><a href="https://developers.facebook.com/blog/post/480/">Batch requests in Graph API</a></li>
73
+ <li><a href="https://developers.facebook.com/blog/post/518/">New Developer App</a> (with <a href="https://developers.facebook.com/blog/post/542/">simplified UI</a>, <a href="https://developers.facebook.com/blog/post/527/">test users UI</a>, groups for <a href="https://developers.facebook.com/blog/post/531/">managing roles</a>, <a href="https://developers.facebook.com/blog/post/554/">integrated App Insights</a>)</li>
74
+ <li><a href="https://developers.facebook.com/blog/post/517/">Graph API Explorer</a></li>
75
+ <li><a href="https://developers.facebook.com/blog/post/559/">New Bugs Tool</a></li>
76
+ <li><a href="https://developers.facebook.com/blog/post/545/">Partnership with Stack Overflow</a> for Technical Q&amp;A</li>
77
+ <li><a href="https://developers.facebook.com/blog/post/558/">Partnership with Heroku</a> for easy hosting of Facebook Apps</li>
78
+ <li><a href="https://developers.facebook.com/html5">HTML5 Portal</a></li>
79
+ <li>Rewrote <a href="https://developers.facebook.com/docs/reference/api/">Graph API</a>, <a href="https://developers.facebook.com/docs/reference/fql/">FQL</a>, and SDK (<a href="https://developers.facebook.com/docs/reference/javascript/">JavaScript SDK</a>, <a href="https://developers.facebook.com/docs/reference/php/">PHP SDK</a>, <a href="https://developers.facebook.com/docs/reference/iossdk/">iOS SDK</a>, and <a href="https://developers.facebook.com/docs/reference/androidsdk/">Android SDK</a>) documentation.</li>
80
+ </ul>
81
+
82
+ <p><strong>Transition to a Modern, Secure Platform</strong></p>
83
+
84
+ <p>2011 was a year that we needed to streamline our Platform to make it more modern and secure. We know these sorts of changes were very painful and impacted many of you, but this was the right move for the ecosystem. We reduced the surface of Platform a great deal, which will enable us to provide better support in the future. These changes included:</p>
85
+
86
+ <ul>
87
+ <li>Removed <a href="https://developers.facebook.com/blog/post/523/">App Directory</a> and <a href="https://developers.facebook.com/blog/post/611/">App Profile Pages</a></li>
88
+ <li>Completed Legacy Auth to <a href="https://developers.facebook.com/docs/oauth2-https-migration/">OAuth 2.0 &amp; HTTPS transition</a></li>
89
+ <li>Announced <a href="https://developers.facebook.com/blog/post/568/">removal of FBML</a></li>
90
+ <li>Announced <a href="https://developers.facebook.com/blog/post/616/">Graph API parity with and deprecation of REST API</a></li>
91
+ </ul>
92
+
93
+ <p><strong>Toward a Stable Platform</strong></p>
94
+
95
+ <p>Late 2010 we first introduced <a href="https://developers.facebook.com/blog/post/417/">Operation Developer Love</a> and continued our efforts throughout 2011. We heard loud and clear that developers wanted a more stable Platform. As a result, we made the following changes:</p>
96
+
97
+ <ul>
98
+ <li><a href="https://developers.facebook.com/blog/post/550/">Beta Tier</a></li>
99
+ <li><a href="https://developers.facebook.com/roadmap/change-policy/">90 day breaking change policy</a></li>
100
+ <li><a href="https://developers.facebook.com/roadmap/">Roadmap</a>, Change Log, Bug Fix Log (found on our <a href="https://www.facebook.com/developers/emailsettings.php">weekly updates</a>)</li>
101
+ <li><a href="https://developers.facebook.com/blog/post/557/">Redesigned Platform Live Status &amp; API</a></li>
102
+ </ul>
103
+
104
+ <p>In the new year we will continue to be focused on growth for your apps and working together to build social experiences for people across the web and mobile devices. Please post your thoughts in the comments below and keep the feedback coming.</p>
105
+ </div>]]></content>
106
+ </entry>
107
+ <entry>
108
+ <title type="text">Platform Updates: Operation Developer Love</title>
109
+ <updated>2011-12-28T13:00:00Z</updated>
110
+ <id>urn:uuid:249807641751977</id>
111
+ <link href="http://developers.facebook.com/blog/post/621/" rel="alternate" type="text/html"/>
112
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p><img src="https://developers.facebook.com/attachment/odl_tall.png" style="float:right;margin-left:17px;margin-right:15px;margin-top:-10px" height="180" /></p>
113
+
114
+ <p>Last week we announced <a href="https://developers.facebook.com/blog/post/620/">Mobile Hacks</a> in New York and Boston and outlined <a href="/blog/post/619/">new features</a> we are making available to games developers.</p>
115
+
116
+ <h1>Open Graph Approvals</h1>
117
+
118
+ <p>With the worldwide rollout of <a href="https://blog.facebook.com/blog.php?post=10150408488962131">Facebook Timeline</a> underway, we are beginning to the process of reviewing Open Graph actions submitted for <a href="https://developers.facebook.com/docs/beta/opengraph/opengraph-approval/">approval</a>. We expect to start approving actions in January and will post an update once we begin to approve actions in earnest. Once the action is approved, the person who submitted the action for approval will receive a Facebook notification and the app can begin publishing this action to all users.</p>
119
+
120
+ <h1>Mobile Hacks</h1>
121
+
122
+ <p>This week we announced our <a href="https://developers.facebook.com/blog/post/620/">Mobile Hacks</a> in New York (January 18th) and Boston (January 20th). More information and signup instructions are available in the blog post linked. This is similar in format to the
123
+ Mobile Hack we ran in Palo Alto in October and is highly recommended for mobile developers.</p>
124
+
125
+ <h1>90-day Breaking Change Announcement</h1>
126
+
127
+ <p>Effective April 1st, 2012 the URLs provided for the <code>redirect_uri</code> parameter and any action links in <a href="https://developers.facebook.com/docs/reference/dialogs/feed/">Feed Dialog</a> posts must be owned by the app. This means that the URLs must match your app's Canvas URL or the 'App Domains' specified in your app settings. This has been added to the <a href="/roadmap">Platform Roadmap</a>.</p>
128
+
129
+ <h1>Platform Policies translated</h1>
130
+
131
+ <p>We have translated the <a href="https://developers.facebook.com/policy">Facebook Platform Policies</a> into thirteen additional languages as an aid to our developers. We will also translate the documents into additional languages based on demand.</p>
132
+
133
+ <table class="uiGrid" cellspacing="0" cellpadding="0">
134
+ <tr height="20px">
135
+ <td width="75px">
136
+ <a href="https://developers.facebook.com/policy/Arabic/"><b>العربية</b></a><br/>
137
+ </td>
138
+ <td width="75px">
139
+ <a href="https://developers.facebook.com/policy/ChineseHK/"><b>中文(简体)</b></a><br/>
140
+ </td>
141
+ <td width="75px">
142
+ <a href="https://developers.facebook.com/policy/ChineseTW/"><b>中文(台灣)</b></a><br/>
143
+ </td>
144
+ <td width="75px">
145
+ <a href="https://developers.facebook.com/policy/Deutsch/"><b>Deutsch</b></a><br/>
146
+ </td>
147
+ <td width="75px">
148
+ <a href="https://developers.facebook.com/policy/Espanol/"><b>Español</b></a><br/>
149
+ </td>
150
+ <td width="75px">
151
+ <a href="https://developers.facebook.com/policy/Francais/"><b>Français</b></a><br/>
152
+ </td>
153
+ <td width="75px">
154
+ <a href="https://developers.facebook.com/policy/Hebrew/"><b>עברית</b></a><br/>
155
+ </td>
156
+ </tr>
157
+
158
+ <tr>
159
+ <td width="75px">
160
+ <a href="https://developers.facebook.com/policy/Italiano/"><b>Italiano</b></a><br/>
161
+ </td>
162
+ <td width="75px">
163
+ <a href="https://developers.facebook.com/policy/Japanese/"><b>日本語</b></a><br/>
164
+ </td>
165
+ <td width="75px">
166
+ <a href="https://developers.facebook.com/policy/Korean/"><b>한국어</b></a><br/>
167
+ </td>
168
+ <td width="75px">
169
+ <a href="https://developers.facebook.com/policy/Polski/"><b>Polski</b></a><br/>
170
+ </td>
171
+ <td width="75px">
172
+ <a href="https://developers.facebook.com/policy/Portugues/"><b>Português</b></a><br/>
173
+ </td>
174
+ <td width="75px">
175
+ <a href="https://developers.facebook.com/policy/Turkce/"><b>Türkçe</b></a><br/>
176
+ </td>
177
+ </tr>
178
+ </table>
179
+
180
+ <h1>Upcoming changes on January 1, 2012</h1>
181
+
182
+ <p><li><strong>Deprecating the <a href="/roadmap/deprecations/#js-sdk">FB.Data.*</a> JS SDK APIs.</strong> This will be no longer supported and will not be available to new apps.</li>
183
+ <li><strong>Deprecating FB.Canvas.setAutoResize.</strong> We have renamed FB.Canvas.setAutoResize to FB.Canvas.setAutoGrow so that the method more accurately represents its function. Fb.Canvas.setAutoResize will be removed.</li>
184
+ <li><strong>Deprecating FBML</strong> FBML will no longer be supported as of <b>January 1, 2012</b>. Aside from security and privacy related bugs, we will not fix any bugs related to FBML after January 1, 2012. On June 1, 2012 FBML endpoints will be removed from Platform</li>
185
+ <li><strong>All apps will be opted into "Upgrade to Requests 2.0" and "Requests 2.0 Efficient"</strong> Existing apps will be opted into “Requests 2.0 Efficient” and "Upgrade to Requests 2.0" migrations and all developers must ensure that they are using the correct request_id format and deleting requests appropriately. Details <a href="/blog/post/569">in this blog post</a></li>
186
+ <li><strong>Enforcing Credits Policy</strong> We have added a new policy to the <a href="/policy/credits">Facebook Credits Terms</a> that prohibits routing Credits from one app to another app without our prior authorization.</li></p>
187
+
188
+ <pre><code>2.14 You may not accept Credits in one app and deliver or
189
+ transfer the purchase to the user in another app without
190
+ our prior authorization. For example, an app solely designed
191
+ to facilitate transactions is not permitted.
192
+ </code></pre>
193
+
194
+ <p>Apps that are not compliant by January 1, 2012 run the risk of having their Credits disabled shortly after.</p>
195
+
196
+ <p>Please refer to the <a href="https://developers.facebook.com/roadmap">Platform Roadmap</a> for more information on these and other upcoming changes.</p>
197
+
198
+ <h1>Bug Activity from 12/21 to 12/27</h1>
199
+
200
+ <p><li>197 bugs were reported</li>
201
+ <li>45 bugs were reproducible and accepted (after duplicates removed)</li>
202
+ <li>21 bugs were by design</li>
203
+ <li>20 bugs were fixed</li>
204
+ <li>173 bugs were duplicate, invalid, or need more information</li></p>
205
+
206
+ <h1>Reported bugs fixed between 12/21 and 12/27</h1>
207
+
208
+ <p><li><a href="https://developers.facebook.com/bugs/284031408314724">FQL place table columns latitude &amp; longitude are documented as int, not float</a></li>
209
+ <li><a href="https://developers.facebook.com/bugs/253725174693478">FQL Mailbox Folder</a></li>
210
+ <li><a href="https://developers.facebook.com/bugs/220904677985962">Oauth Validation error when exchanging Oauth 'code' for an access token</a></li>
211
+ <li><a href="https://developers.facebook.com/bugs/146399405469364">Facebook Linter throwing error</a></li>
212
+ <li><a href="https://developers.facebook.com/bugs/176687439095617">Description of "country" field in Order docs is incorrect</a></li>
213
+ <li><a href="https://developers.facebook.com/bugs/336477446379106">FB Login is working erratically, and not at all on some sites.</a></li>
214
+ <li><a href="https://developers.facebook.com/bugs/314958038528381">Uncaught exception 602</a></li>
215
+ <li><a href="https://developers.facebook.com/bugs/200182053398723">Connection between application and page gets lost</a></li>
216
+ <li><a href="https://developers.facebook.com/bugs/333734626643727">Wrong translation of 'Recommend' into Danish</a></li>
217
+ <li><a href="https://developers.facebook.com/bugs/184502608306687">Feed privacy defaults not applied for users without timeline</a></li>
218
+ <li><a href="https://developers.facebook.com/bugs/258759030849050">SCRIPT70: Permission denied all.js, line 22 character 4321 - Internet Explorer 9</a></li>
219
+ <li><a href="https://developers.facebook.com/bugs/239526859438448">strange beaviour while setting app restrictions</a></li>
220
+ <li><a href="https://developers.facebook.com/bugs/233301976725432">Facebook Credits not working anymore on tabs</a></li>
221
+ <li><a href="https://developers.facebook.com/bugs/134593003309104">Credits Documentation</a></li>
222
+ <li><a href="https://developers.facebook.com/bugs/269538539734056">login-button documentation is wrong with oauth 2</a></li>
223
+ <li><a href="https://developers.facebook.com/bugs/263705737003195">https://developers.facebook.com/docs/mobile/ios/sso/ is invalid</a></li>
224
+ <li><a href="https://developers.facebook.com/bugs/118464591591635">Link to docs/opengraph/devtool/boxes/ not found</a></li>
225
+ <li><a href="https://developers.facebook.com/bugs/267274006628944">Graph API Search Volume Decreasing</a></li>
226
+ <li><a href="https://developers.facebook.com/bugs/290174694331930">Item with a 1 credit value does not display correctly in the js modal dialogue</a></li>
227
+ <li><a href="https://developers.facebook.com/bugs/148135148603931">Add keyboard shortcuts</a></li></p>
228
+
229
+ <h1>Activity on <a href="http://facebook.stackoverflow.com">facebook.stackoverflow.com</a> this week</h1>
230
+
231
+ <p><li>75 questions asked</li>
232
+ <li>18 <a href="http://blog.stackoverflow.com/2008/09/ok-now-define-answered/">answered</a>, 24% answered rate</li>
233
+ <li>36 replied, 48% reply rate</li></p>
234
+ </div>]]></content>
235
+ </entry>
236
+ <entry>
237
+ <title type="text">Mobile Hack Coming To Boston and New York </title>
238
+ <updated>2011-12-22T17:30:00Z</updated>
239
+ <id>urn:uuid:121501427966504</id>
240
+ <link href="http://developers.facebook.com/blog/post/620/" rel="alternate" type="text/html"/>
241
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p>
242
+ In October, we <a href="https://developers.facebook.com/blog/post/575/">announced the extension of Platform to Mobile</a>, bringing social channels to mobile apps. The same month we invited mobile developers to join us for a Mobile Hack in Palo Alto. Some 300 developers came for a full day of learning about Facebook Platform for Mobile and hacking with Facebook engineers. A few dozen projects were put together that night and a panel selected the best ones, which were recognized and awarded.
243
+ </p>
244
+
245
+ <p>
246
+ We are now excited to announce that we are hosting Mobile Hacks in Boston and New York:
247
+ </p>
248
+
249
+ <p>
250
+ New York on January 18th: Sign up <a href="http://mobilehacknewyork.eventbrite.com"> here</a>.
251
+ </p>
252
+
253
+ <p>
254
+ Boston on January 20th: Sign up <a href="http://bostonhack.eventbrite.com"> here</a>.
255
+ </p>
256
+
257
+ <p>
258
+ At this all-day event you will learn about building social mobile apps and then do some hacking on your own projects, with assistance and guidance from Facebook engineers. We will cover both native and mobile web (HTML5) app development, and you will have a chance to present in front of a panel of experts. Prizes will be awarded for the best apps. Your project does not need to be created from scratch at the event. Start building now using our <a herf="https://developers.facebook.com/docs/guides/mobile/">Mobile resource center</a>
259
+ </p>
260
+
261
+ <p>Space is limited for these events. Sign up now to secure your spot.</p>
262
+ </div>]]></content>
263
+ </entry>
264
+ <entry>
265
+ <title type="text">Platform Updates for Games Developers</title>
266
+ <updated>2011-12-22T16:30:00Z</updated>
267
+ <id>urn:uuid:331099280235271</id>
268
+ <link href="http://developers.facebook.com/blog/post/619/" rel="alternate" type="text/html"/>
269
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p>As part of ongoing efforts to optimize Platform for game developers, and to reflect the diversity of games growing on Platform, we’ve made updates to the games categories as well as some of the main communication channels, including Bookmarks and the <a href="https://www.facebook.com/games">Apps and Games Dashboard</a>. Additionally, we are testing new feed stories on mobile, to improve app engagement. Finally we have also published a <a href="https://developers.facebook.com/docs/guides/games/">Games Tutorial</a> to provide game developers best practices for building on Facebook Platform.</p>
270
+
271
+ <h3>Games Category Updates</h3>
272
+
273
+ <p>As the types of games on Facebook become more diverse, we’re updating and expanding the list of game categories. It's important that your game is categorized correctly, as we use categories to surface relevant games for users, which can increase distribution for your games. In order to streamline the categories, we've removed the "Other" category. If your game is categorized as "Other", you will need to pick a new category.</p>
274
+
275
+ <p>Here are the additional updates:</p>
276
+
277
+ <ul>
278
+ <li>We've added new categories for "Casino", "Family", "Sports", "Strategy" and "Word".</li>
279
+ <li>"Role Playing" is now "Adventure".</li>
280
+ <li>"Virtual World" is now "Simulation".</li>
281
+ </ul>
282
+
283
+ <p>Here is the full list of the updated Games Categories:</p>
284
+
285
+ <table>
286
+ <tr>
287
+ <td>Action & Arcade </td>
288
+ <td>Casino</td>
289
+ <td>Sports</td></tr>
290
+ <tr><td>Adventure</td>
291
+ <td>Family </td>
292
+ <td>Strategy </td></tr>
293
+ <tr><td>Board </td>
294
+ <td>Puzzle </td>
295
+ <td>Trivia </td></tr>
296
+ <tr><td>Card </td>
297
+ <td>Simulation</td>
298
+ <td>Word</td></tr>
299
+ </table>
300
+
301
+ <p>To set your Game Category, go to the <a href="https://developers.facebook.com/apps">Developer App</a> and then hit "Edit Settings" for your app. You can now categorize your app by navigating to About > Basic Info and selecting "Games" in the first drop down menu in the category field and then selecting the relevant Game sub-category in the second drop down menu.</p>
302
+
303
+ <p><img src="https://developers.facebook.com/attachment/game_categories.gif"/></p>
304
+
305
+ <h3>Bookmarks Updated</h3>
306
+
307
+ <p>Bookmarks are one of the top drivers of re-engagement for apps. We recently increased the number of bookmarks at the top right of every canvas page from four to six. Early results have shown that this has increased referrals from canvas bookmarks to games by 20%.</p>
308
+
309
+ <p><img src="https://developers.facebook.com/attachment/canvas_bookmarks.png"/></p>
310
+
311
+ <p>We've also updated bookmark counters on the home page to clear automatically once clicked, similar to how notifications behave. Previously, these counters would clear once the requests expired or were deleted by the developer. This update should make it clearer to users when they have a pending action and drive greater re-engagement.</p>
312
+
313
+ <p><img src="https://developers.facebook.com/attachment/clicking_counter.gif"/></p>
314
+
315
+ <h3>Combined Apps &amp; Games Dashboard</h3>
316
+
317
+ <p>We combined the Games and Apps dashboards into a single dashboard, called <a href="https://www.facebook.com/games">"Apps and Games"</a>. The updated dashboard will allow users to see all their requests and invites in a single page and will highlight new apps and games to them. Invites from friends are pinned to the top of the dashboard, and the top apps section showcases the apps and games friends are using most.</p>
318
+
319
+ <p>We believe a combined dashboard will grow the apps and games ecosystem by creating a single place where users can discover and re-engage with your apps.</p>
320
+
321
+ <p><img width="650px" src="https://developers.facebook.com/attachment/app_dashboard.gif"/></p>
322
+
323
+ <h3>Testing Games Stories in the Mobile News Feed</h3>
324
+
325
+ <p>We’ve recently begun testing aggregated game stories for <a href="https://developers.facebook.com/docs/guides/mobile/">mobile platform</a> apps to drive traffic from mobile devices to games. Gamers and non-gamers alike will see stories for the games their friends are playing the most. As we gather user and developer feedback from this test, we’ll continue to iterate on the feature as we focus on making feed a strong acquisition channel for developers.</p>
326
+
327
+ <p><img width="300px" align="center" src="https://developers.facebook.com/attachment/mobile_stories2.gif"/></p>
328
+
329
+ <p>To track referrals coming from this story you look for the ref param "feed_gameplay".</p>
330
+
331
+ <h3>Games Tutorial</h3>
332
+
333
+ <p>Earlier this month we hosted the first ever Social Games Hack at the Facebook HQ and have since <a href="https://developers.facebook.com/blog/post/613/">posted videos</a> for all the content that was presented there. As a follow up we have created a <a href="https://developers.facebook.com/docs/guides/games/">Games Tutorial</a> to help developers get started with building social games on Facebook. This tutorial provides several pro-tips and best practices for using our <a href="https://developers.facebook.com/docs/guides/games/#social_channels">social channels</a>, building <a href="https://developers.facebook.com/docs/guides/games/#best_practices">seamless experiences on Canvas</a> and finally <a href="https://developers.facebook.com/docs/guides/games/#monetization">monetization strategies</a> on Facebook.</p>
334
+
335
+ <p>Please provide us thoughts and feedback in the comments below.</p>
336
+ </div>]]></content>
337
+ </entry>
338
+ <entry>
339
+ <title type="text">Platform Updates: Operation Developer Love</title>
340
+ <updated>2011-12-21T19:15:00Z</updated>
341
+ <id>urn:uuid:208699092548439</id>
342
+ <link href="http://developers.facebook.com/blog/post/618/" rel="alternate" type="text/html"/>
343
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p><img src="http://developers.facebook.com/attachment/odl_tall.png" style="float:right;margin-left:17px;margin-right:15px;margin-top:-10px" height="180" /></p>
344
+
345
+ <p>Last week we <a href="https://blog.facebook.com/blog.php?post=10150408488962131">released Timeline</a> to our worldwide audience and made it <a href="https://blog.facebook.com/blog.php?post=10150408335607131">available on mobile</a>. We also <a href="https://developers.facebook.com/docs/reference/rest/">deprecated the REST API</a> and completed porting all intended functionality over to the Graph API.</p>
346
+
347
+ <p><b>Upcoming changes on January 1, 2012</b></p>
348
+
349
+ <ul>
350
+ <li><b>Deprecating the <a href="/roadmap/deprecations/#js-sdk">FB.Data.*</a> JS SDK APIs</b> This will be no longer supported and will not be available to new apps.</li>
351
+ <li><b>Deprecating FB.Canvas.setAutoResize</b> We have renamed FB.Canvas.setAutoResize to FB.Canvas.setAutoGrow so that the method more accurately represents its function. Fb.Canvas.setAutoResize will be removed.</li>
352
+ <li><b>Deprecating FBML</b> FBML will no longer be supported as of <b>January 1, 2012</b>. Aside from security and privacy related bugs, we will not fix any bugs related to FBML after January 1, 2012. On June 1, 2012 FBML endpoints will be removed from Platform</li>
353
+ <li><b>All apps will be opted into "Upgrade to Requests 2.0" and "Requests 2.0 Efficient"</b> Existing apps will be opted into “Requests 2.0 Efficient” and "Upgrade to Requests 2.0" migrations and all developers must ensure that they are using the correct request_id format and deleting requests appropriately. Details <a href="https://developers.facebook.com/blog/post/569/">here</a></li>
354
+ <li><b>Enforcing Credits Policy</b> We have added a new policy to the <a href="https://developers.facebook.com/policy/credits/">Facebook Credits Terms</a> that prohibits routing Credits from one app to another app without our prior authorization.
355
+ <blockquote>2.14 You may not accept Credits in one app and deliver or transfer the purchase to the user in another app without our prior authorization. For example, an app solely designed to facilitate transactions is not permitted.</blockquote>
356
+ <p>Apps that are not compliant by January 1, 2012 run the risk of having their Credits disabled shortly after.</li>
357
+ </ul>
358
+
359
+ <p>
360
+ Please refer to the <a href="https://developers.facebook.com/roadmap">Platform Roadmap</a> for more info on these and other upcoming changes.
361
+ </p>
362
+
363
+ <p>
364
+ <b>Bug Activity from 12/13 to 12/20</b>
365
+ </p>
366
+
367
+ <ul>
368
+ <li>253 bugs were reported</li>
369
+ <li>60 bugs were reproducible and accepted (after duplicates removed)</li>
370
+ <li>42 bugs were by design</li>
371
+ <li>19 bugs were fixed</li>
372
+ <li>116 bugs were duplicate, invalid, or need more information</li>
373
+ </ul>
374
+
375
+ <p>
376
+ <b>Bugs fixed from 12/13 to 12/20</b>
377
+ </p>
378
+
379
+ <ul>
380
+ <li><a href="https://developers.facebook.com/bugs/331011633576158">"friends_relationship_details" permission is not needed to get "significant_other"</a></li>
381
+ <li><a href="https://developers.facebook.com/bugs/134909119955013">Tumblr communication problems with Facebook</a></li>
382
+ <li><a href="https://developers.facebook.com/bugs/259293390797540">The page at "url" could not be reached because the server returned status code 400.</a></li>
383
+ <li><a href="https://developers.facebook.com/bugs/263024387084809">"App Display Name cannot be similar to the name of any apps built by Facebook."</a></li>
384
+ <li><a href="https://developers.facebook.com/bugs/154027108034989">Application name can't contains text "pira"</a></li>
385
+ <li><a href="https://developers.facebook.com/bugs/299443436767391">Test User Making friend connections Documentation Unclear </a></li>
386
+ <li><a href="https://developers.facebook.com/bugs/151419708293750">FB.init documentation lists oauth:false as default</a></li>
387
+ <li><a href="https://developers.facebook.com/bugs/327795570583048">facebook login</a></li>
388
+ <li><a href="https://developers.facebook.com/bugs/212781908800717">reachestimate sometimes fails with an unknown error</a></li>
389
+ <li><a href="https://developers.facebook.com/bugs/199300110158548">Broken link: Social Channels ->News Feed -> Feed Graph Object: Publish via the Graph API -> permission</a></li>
390
+ <li><a href="https://developers.facebook.com/bugs/160403440728562">video_tag query example uses wrong table</a></li>
391
+ <li><a href="https://developers.facebook.com/bugs/302173113155841">Requests 1.0 not returning ids</a></li>
392
+ <li><a href="https://developers.facebook.com/bugs/287778994600858">Basic JS method hasOwnProperty broken on FB JS library</a></li>
393
+ <li><a href="https://developers.facebook.com/bugs/150414541729973">Auth Dialog settings do not show up</a></li>
394
+ <li><a href="https://developers.facebook.com/bugs/253503981376269">De-Authorization Call never comes when using SSL</a></li>
395
+ <li><a href="https://developers.facebook.com/bugs/295873967110238">all proxy email failing - connection refused by proxymail-mta.facebook.com</a></li>
396
+ <li><a href="https://developers.facebook.com/bugs/182743808483002">Null fields in FQL friend queries</a></li>
397
+ <li><a href="https://developers.facebook.com/bugs/304904889528423">Value cannot be null</a></li>
398
+ <li><a href="https://developers.facebook.com/bugs/287153384639014">Auto-frictonless payments only work for items costing 30 credits or less</a></li>
399
+ </ul>
400
+
401
+ <p>
402
+ <b>Activity on <a href="http://facebook.stackoverflow.com">facebook.stackoverflow.com</a> this week:</b>
403
+ </p>
404
+
405
+ <ul>
406
+ <li>126 questions asked</li>
407
+ <li>26 <a href="http://blog.stackoverflow.com/2008/09/ok-now-define-answered/">answered</a>, 21% answered rate</li>
408
+ <li>56 replied, 44% reply rate</li>
409
+ </ul>
410
+ </div>]]></content>
411
+ </entry>
412
+ <entry>
413
+ <title type="text">Deprecating the REST API</title>
414
+ <updated>2011-12-21T11:30:00Z</updated>
415
+ <id>urn:uuid:235681453169536</id>
416
+ <link href="http://developers.facebook.com/blog/post/616/" rel="alternate" type="text/html"/>
417
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p>We <a href="https://developers.facebook.com/blog/post/377/">announced</a> the <a href="https://developers.facebook.com/docs/reference/api">Graph API</a> at <a href="https://developers.facebook.com/blog/post/379">f8 2010</a>. Since that event, we have been working hard to ensure that the most important functionality that developers were using with the <a href="https://developers.facebook.com/docs/reference/rest/">REST API</a> is available via the <a href="https://developers.facebook.com/docs/reference/api">Graph API</a>. For the past several months we have been slowly <a href="https://developers.facebook.com/blog/post/553/">launching</a> new features in the Graph API to bring it up to parity with the REST API.</p>
418
+
419
+ <p>Today, we are launching the last two remaining APIs that we intend to port to the Graph API. <b>With this we are officially deprecating the REST API</b>.</p>
420
+
421
+ <p>Note: Deprecating the REST API does not mean we are removing it, but we are actively encouraging all developers to use the Graph API for any new apps and to move existing apps to use it, as well. Moving forward, all new features will only be available in the Graph API and the level of support will be higher on a non-deprecated API.</p>
422
+
423
+ <h3>Accessing app properties via the Graph API and FQL</h3>
424
+
425
+ <p>We have added the ability to read and manage several new app property fields via the Graph API <a href="https://developers.facebook.com/docs/reference/api/application">application object</a>. It is also possible to read these properties via the <a href="https://developers.facebook.com/docs/reference/fql/application/">application FQL table</a>.</p>
426
+
427
+ <p>To retrieve a list of properties from an app, issue an <code>HTTP GET</code> with an <code>app access_token</code> to <code>https://graph.facebook.com/APP_ID?fields=PROPERTY_NAMES</code>, specifying the names of the property values you want to retrieve in a comma-separated list. See the Graph API <a href="https://developers.facebook.com/docs/reference/api/application">application object</a> for a list of available properties and return types.</p>
428
+
429
+ <p>For example, the following HTTP request retrieves some of the fields related to the new authentication dialog:</p>
430
+
431
+ <pre><code> GET https://graph.facebook.com/APP_ID/
432
+ ?fields=auth_dialog_headline,auth_dialog_perms_explanation
433
+ &amp;access_token=APP_ACCESS_TOKEN
434
+ </code></pre>
435
+
436
+ <p>To set any properties for an app, issue an <code>HTTP POST</code> with an <code>app access_token</code> to <code>https://graph.facebook.com/APP_ID?PROPERTY=VALUE</code> using the properties and types as defined in the Graph API <a href="https://developers.facebook.com/docs/reference/api/application">application object</a>. Not all app properties can be edited via the API, such as <code>id</code>, <code>logo_url</code>, etc. Array properties can be unset by passing an empty <code>array</code>.</p>
437
+
438
+ <p>For example, the following HTTP request sets some of the fields related to the new authentication dialog:</p>
439
+
440
+ <pre><code> POST https://graph.facebook.com/APP_ID/
441
+ ?auth_dialog_headline=My%20great%20headline
442
+ &amp;auth_dialog_perms_explanation=Some%20explanatory%20text
443
+ &amp;access_token=APP_ACCESS_TOKEN
444
+ </code></pre>
445
+
446
+ <p>You can obtain an <code>app access_token</code> from the Graph API <b>token endpoint</b> at <code>https://graph.facebook.com/oauth/access_token</code>. See the <a href="https://developers.facebook.com/docs/authentication/#app-login">App Login section of the Authentication documentation</a> for more information.</p>
447
+
448
+ <h3>Accessing Developer Roles for an App via the Graph API and FQL</h3>
449
+
450
+ <p>We have added the ability to read and manage developer roles for an application via the <a href="https://developers.facebook.com/docs/reference/api/application#roles">roles connection</a> on the Graph API <code>application</code> object. It is also possible to query developer roles via the <a href="https://developers.facebook.com/docs/reference/fql/developer/">developer FQL table</a>.</p>
451
+
452
+ <p>In order to read the developer roles for an app, issue an <code>HTTP GET</code> request to <code>https://graph.facebook.com/APP_ID/roles</code> using an <code>app access_token</code>. We will return an <code>array</code> of objects containing string properties <code>app_id</code>, <code>user</code> and <code>role</code>. The possible values for role are <code>administrators</code>, <code>developers</code>, <code>testers</code> or <code>insights users</code>.</p>
453
+
454
+ <p>To add a developer role, a <code>user access_token</code> for a user who is an administrator of the app is required. Issue an <code>HTTP POST</code> request to <code>https://graph.facebook.com/APP_ID/roles</code>, with the <code>user_id</code> specified in the <code>user</code> field, and the role (as above) in the <code>role</code> field. This returns <code>true</code> if successful. The user being added will receive a request via the <a href="https://developers.facebook.com/apps">Developer app</a> which they will need to accept before the role is confirmed.</p>
455
+
456
+ <p>To remove a developer role, a <code>user access_token</code> for a user who is an administrator of the app is required. Issue an <code>HTTP DELETE</code> request to <code>https://graph.facebook.com/APP_ID/roles</code>, with the <code>user_id</code> specified in the <code>user</code> field. This will return <code>true</code> if successful, and the user will be removed immediately.</p>
457
+
458
+ <p>Here is some sample code which reads all developer roles for your application using an app access token, and will allow a logged in app administrator to add and remove roles via calls to <code>FB.api()</code> using the <a href="https://developers.facebook.com/docs/reference/javascript/">JavaScript SDK</a>.</p>
459
+
460
+ <pre>
461
+ &lt;?php
462
+ $app_id = 'YOUR_APP_ID';
463
+ $app_secret = 'YOUR_APP_SECRET';
464
+
465
+ // Query app access token
466
+ $app_access_token = file_get_contents(
467
+ 'https://graph.facebook.com/oauth/access_token?' .
468
+ 'client_id='.$app_id.'&client_secret='.$app_secret.'&' .
469
+ 'grant_type=client_credentials');
470
+
471
+ // Query app developer roles
472
+ $roles = json_decode(file_get_contents(
473
+ 'https://graph.facebook.com/'.$app_id.'/roles?' .
474
+ $app_access_token
475
+ ));
476
+
477
+ ?&gt;
478
+ &lt;html&gt;
479
+ &lt;body&gt;
480
+ &lt;div class="fb-login-button"&gt;Login with Facebook&lt;/div&gt;
481
+
482
+ &lt;h3&gt;Existing Roles&lt;/h3&gt;
483
+ &lt;p&gt;
484
+ &lt;?php foreach ($roles-&gt;data as $role) { ?&gt;
485
+ user: &lt;?php echo $role-&gt;user ?&gt; /
486
+ role: &lt;?php echo $role-&gt;role ?&gt; -
487
+ &lt;a href="javascript:removeRole(&lt;?php echo $role-&gt;user ?&gt;)"&gt;remove&lt;/a&gt;&lt;br /&gt;
488
+ &lt;?php } ?&gt;
489
+ &lt;/p&gt;
490
+
491
+ &lt;h3&gt;Add new role&lt;/h3&gt;
492
+ &lt;p&gt;
493
+ user: &lt;input type="text" id="user" /&gt; /
494
+ role: &lt;input type="text" id="role" /&gt; -
495
+ &lt;a href="javascript:addRole()"&gt;add&lt;/a&gt;
496
+ &lt;/p&gt;
497
+
498
+ &lt;p&gt;Check developer console for API response.&lt;/p&gt;
499
+
500
+ &lt;div id="fb-root"&gt;&lt;/div&gt;
501
+ &lt;script src="http://connect.facebook.net/en_US/all.js"&gt;&lt;/script&gt;
502
+ &lt;script&gt;
503
+ // Define APP_ID
504
+ var APP_ID = &lt;?php echo $app_id ?&gt;;
505
+
506
+ FB.init({
507
+ appId : APP_ID,
508
+ status : true, // check login status
509
+ cookie : true, // enable cookies
510
+ xfbml : true, // parse XFBML
511
+ oauth : true // enable OAuth 2.0
512
+ });
513
+
514
+ // Function to remove role for a given user
515
+ var removeRole = function(user) {
516
+ FB.api('/' + APP_ID + '/roles', 'delete', { user: user }, logResponse);
517
+ };
518
+
519
+ // Function to add new role for a given user
520
+ var addRole = function() {
521
+ user = document.getElementById('user').value;
522
+ role = document.getElementById('role').value;
523
+ FB.api('/' + APP_ID + '/roles', 'post',
524
+ { user: user, role: role }, logResponse);
525
+ };
526
+
527
+ var logResponse = function(response) {
528
+ console.log(response);
529
+ };
530
+ &lt;/script&gt;
531
+ &lt;/body&gt;
532
+ &lt;/html&gt;
533
+ </pre>
534
+
535
+ <p>Please provide thoughts and feedback in the comments below.</p>
536
+ </div>]]></content>
537
+ </entry>
538
+ <entry>
539
+ <title type="text">Platform Updates: Operation Developer Love</title>
540
+ <updated>2011-12-14T14:39:00Z</updated>
541
+ <id>urn:uuid:151485951621103</id>
542
+ <link href="http://developers.facebook.com/blog/post/615/" rel="alternate" type="text/html"/>
543
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p><img src="http://developers.facebook.com/attachment/odl_tall.png" style="float:right;margin-left:17px;margin-right:15px;margin-top:-10px" height="180" /></p>
544
+
545
+ <p>Last week we <a href="https://developers.facebook.com/blog/post/609/">introduced the Subscribe Button for Websites</a>, announced the <A href="https://developers.facebook.com/blog/post/611/">removal of App Profile Pages</a> on February 1st, 2012, provided a <a href="https://developers.facebook.com/blog/post/613/">recap on our recent Social Games Hack</a> and published a tutorial on <A href="https://developers.facebook.com/blog/post/612/">debugging Open Graph apps</a>.</p>
546
+
547
+ <p>Finally, we updated <a href="https://developers.facebook.com/blog/post/614/">the JavaScript SDK to only support OAuth 2.0</a>. This new JavaScript SDK was first announced in July with the requirement that all apps to migrate by <a href="https://developers.facebook.com/docs/oauth2-https-migration/">October 1, 2011</a>. If your app was affected, read more about the specific changes that you need to make <a href="https://developers.facebook.com/blog/post/525/">here</a>. A friendly reminder that it is important to follow the <A href="http://developers.facebook.com/blog">Facebook Developer Blog</a> or the <a href="https://developers.facebook.com/roadmap">Roadmap</a> for breaking change updates. This can be done by <a href="https://www.facebook.com/developers/emailsettings.php">email</a> or <a href="https://developers.intern.facebook.com/blog/feed">RSS</a>.</p>
548
+
549
+ <p><b>Platform Changes</b></p>
550
+
551
+ <p>This week we completed the discontinuation of the Dashboard APIs with the exception of <code>dashboard.incrementCount</code>, <code>dashboard.decrementCount</code>, <code>dashboard.setCount</code> and <code>dashboard.getCount</code> methods. All apps should upgrade to the new <A href="https://developers.facebook.com/blog/post/464">Requests 2.0</A>.</p>
552
+
553
+ <p><b>Upcoming changes on January 1, 2012</b></p>
554
+
555
+ <ul>
556
+ <li><b>Deprecating the <a href="/roadmap/deprecations/#js-sdk">FB.Data.*</a> JS SDK APIs</b> This will be no longer supported and will not be available to new apps.</li>
557
+ <li><b>Deprecating FB.Canvas.setAutoResize</b> We have renamed FB.Canvas.setAutoResize to FB.Canvas.setAutoGrow so that the method more accurately represents its function. Fb.Canvas.setAutoResize will be removed.</li>
558
+ <li><b>Deprecating FBML</b> FBML will no longer be supported as of <b>January 1, 2012</b>. Aside from security and privacy related bugs, we will not fix any bugs related to FBML after January 1, 2012. On June 1, 2012 FBML endpoints will be removed from Platform</li>
559
+ <li><b>All apps will be opted into "Upgrade to Requests 2.0" and "Requests 2.0 Efficient"</b> Existing apps will be opted into “Requests 2.0 Efficient” and "Upgrade to Requests 2.0" migrations and all developers must ensure that they are using the correct request_id format and deleting requests appropriately. Details <a href="https://developers.facebook.com/blog/post/569/">here</a></li>
560
+ <li><b>Enforcing Credits Policy</b> We have added a new policy to the <a href="https://developers.facebook.com/policy/credits/">Facebook Credits Terms</a> that prohibits routing Credits from one app to another app without our prior authorization.
561
+ <blockquote>2.14 You may not accept Credits in one app and deliver or transfer the purchase to the user in another app without our prior authorization. For example, an app solely designed to facilitate transactions is not permitted.</blockquote>
562
+ <p>Apps that are not compliant by January 1, 2012 run the risk of having their Credits disabled shortly after.</li>
563
+ </ul>
564
+
565
+ <p>
566
+ Please refer to the <a href="https://developers.facebook.com/roadmap">Platform Roadmap</a> for more info on these and other upcoming changes.
567
+ </p>
568
+
569
+ <p>
570
+ <b>Bug Activity from 12/6 to 12/13</b>
571
+ </p>
572
+
573
+ <ul>
574
+ <li>210 bugs were reported</li>
575
+ <li>89 bugs were reproducible and accepted (after duplicates removed)</li>
576
+ <li>61 bugs were by design</li>
577
+ <li>27 bugs were fixed</li>
578
+ <li>71 bugs were duplicate, invalid, or need more information</li>
579
+ </ul>
580
+
581
+ <p>
582
+ <b>Bugs fixed from 12/6 to 12/13</b>
583
+ </p>
584
+
585
+ <ul>
586
+ <li><a href="https://developers.facebook.com/bugs/326926027320196">Link to the "How do I get reimbursed" page is wrong</a></li>
587
+ <li><a href="https://developers.facebook.com/bugs/124995400948223">Duplicate attribute - num_posts - listed on Comment Plugin Documentation Page</a></li>
588
+ <li><a href="https://developers.facebook.com/bugs/256444431075802">Dead link on http://developers.facebook.com/docs/guides/canvas/#insights</a></li>
589
+ <li><a href="https://developers.facebook.com/bugs/158723520894230">BREAKING CHANGE: Format of Facebook API Response</a></li>
590
+ <li><a href="https://developers.facebook.com/bugs/285440228160623">Documentation typo: "JavaScript" misspelled in link "JavaScrtip SDK" at https://developers.facebook.com/docs/reference/javascript/FB.init/</a></li>
591
+ <li><a href="https://developers.facebook.com/bugs/267972309919356">"format error in Old REST API Documentation page</a></li>
592
+ <li><a href="https://developers.facebook.com/bugs/242704499126462">New Auth does not send "code" to redirect page if users skips extended permissions</a></li>
593
+ <li><a href="https://developers.facebook.com/bugs/228888177178407">Requests 1.0 no longer showing request message</a></li>
594
+ <li><a href="https://developers.facebook.com/bugs/248587011865643">Cannot delete posts to app and fan pages</a></li>
595
+ <li><a href="https://developers.facebook.com/bugs/114326045347805">Like Box feed photo squished</a></li>
596
+ <li><a href="https://developers.facebook.com/bugs/182705755149358">connect() timed out!</a></li>
597
+ <li><a href="https://developers.facebook.com/bugs/202061939872315">server whitelist does not accept ipv6 adddresses</a></li>
598
+ <li><a href="https://developers.facebook.com/bugs/145804828853802">Facebook comments disappear past May 2011 v2</a></li>
599
+ <li><a href="https://developers.facebook.com/bugs/240521779341234">Graph API stats for an adgroup - missing unique impressions</a></li>
600
+ <li><a href="https://developers.facebook.com/bugs/308316382512599">Like Box Error.</a></li>
601
+ <li><a href="https://developers.facebook.com/bugs/190140734398158">Facebook Send button missing icon</a></li>
602
+ <li><a href="https://developers.facebook.com/bugs/188045844609566">Live stream box configuration error</a></li>
603
+ <li><a href="https://developers.facebook.com/bugs/273142312725520">Allow page</a></li>
604
+ <li><a href="https://developers.facebook.com/bugs/259085580801085">iphone and ipad apps lose URL context on redirect for canvas apps</a></li>
605
+ <li><a href="https://developers.facebook.com/bugs/222763661119914">Facebook Ads API - Ad group Suggested Bid</a></li>
606
+ <li><a href="https://developers.facebook.com/bugs/158684890893035">Dark scheme hides links on social plugin</a></li>
607
+ <li><a href="https://developers.facebook.com/bugs/204942886240556">Broken Link - Mobile SSO Documentation</a></li>
608
+ <li><a href="https://developers.facebook.com/bugs/174276242655775">fb:comment returning httpS content when called over http</a></li>
609
+ <li><a href="https://developers.facebook.com/bugs/181487731927353">Notifications auto-scroll not working for game requests</a></li>
610
+ <li><a href="https://developers.facebook.com/bugs/172406742840270">Live Stream Plugin not displaying posts</a></li>
611
+ <li><a href="https://developers.facebook.com/bugs/216327195092981">Like button not counting likes for some app pages</a></li>
612
+ <li><a href="https://developers.facebook.com/bugs/111829965587408">Bad request error</a></li>
613
+ </ul>
614
+
615
+ <p>
616
+ <b>Activity on <a href="http://facebook.stackoverflow.com">facebook.stackoverflow.com</a> this week:</b>
617
+ </p>
618
+
619
+ <ul>
620
+ <li>140 questions asked</li>
621
+ <li>16 <A href="http://blog.stackoverflow.com/2008/09/ok-now-define-answered/">answered</a>, 11% answered rate</li>
622
+ <li>50 replied, 36% reply rate</li>
623
+ </ul>
624
+ </div>]]></content>
625
+ </entry>
626
+ <entry>
627
+ <title type="text">Breaking Change: JavaScript SDK to oauth:true on December 13th</title>
628
+ <updated>2011-12-12T17:00:00Z</updated>
629
+ <id>urn:uuid:132266233552163</id>
630
+ <link href="http://developers.facebook.com/blog/post/614/" rel="alternate" type="text/html"/>
631
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p>As part of our continued efforts to migrate all apps to OAuth 2.0, we are opting in all apps using the new JavaScript SDK to OAuth 2.0 tomorrow at 11am Pacific Time. The deadline to support OAuth 2.0 was <a href="https://developers.facebook.com/docs/oauth2-https-migration/">October 1st, 2011</a>.</p>
632
+
633
+ <p>The new JS SDK with OAuth 2.0 was introduced in July. Tomorrow, on <b>December 13th at 11am</b>, we will automatically default the <code>oauth</code> param to true in <code>FB.init</code>. With this change, please ensure that you are using <code>FB.getAuthResponse</code> to obtain the access token. Read more about the specific changes that you need to make <a href="https://developers.facebook.com/blog/post/525/">here</a>.</p>
634
+ </div>]]></content>
635
+ </entry>
636
+ <entry>
637
+ <title type="text">Facebook Social Games Hack Recap</title>
638
+ <updated>2011-12-12T16:45:00Z</updated>
639
+ <id>urn:uuid:126485374133170</id>
640
+ <link href="http://developers.facebook.com/blog/post/613/" rel="alternate" type="text/html"/>
641
+ <content type="text/html" xml:lang="en"><![CDATA[<div><p><img src="https://developers.facebook.com/attachment/GamesHACK.jpg" style="float:right;margin-left:17px;margin-right:15px;margin-top:10px" height="180" /></p>
642
+
643
+ <p>Last week we hosted the first <a href="https://developers.facebook.com/blog/post/606/">Facebook Games HACK</a> at the Facebook HQ in Palo Alto. More than 150 game developers including 6waves Lolapps, Crowdstar, EA, GameHouse, Gaikai, Gamespy, GSN, iWin, Kixeye, Konami, Making Fun, Moblyng, MTV Networks, NEXON, Paramount Pictures, Playdom, Popcap, Product Madness, Ubisoft, Wooga, and Zynga attended to discuss building social games on Facebook and to hack.</p>
644
+
645
+ <h2>Sessions</h2>
646
+
647
+ <p>The Facebook games team presented various sessions, starting with a <a href="https://www.facebook.com/photo.php?v=10150405064397000">Welcome</a> from from Carl Sjogreen, Director of Platform Products, followed by sessions on <a href="https://www.facebook.com/photo.php?v=10150404920517000">best practices for building Social Games on Facebook</a>, <a href="https://www.facebook.com/photo.php?v=10150405039412000">Scores and Achievements</a>, <a href="https://www.facebook.com/photo.php?v=10150404963667000">Open Graph</a>, <a href="https://www.facebook.com/photo.php?v=10150404971397000">Game scenarios for Open Graph</a> and the <a href="https://www.facebook.com/photo.php?v=10150405041947000">Facebook mobile platform</a>. The videos are all available on the <a href="https://www.facebook.com/platform">Facebook Platform Page</a> and also linked to from the session names above.</p>
648
+
649
+ <h2>Winners of the night</h2>
650
+
651
+ <p>Several developers stayed late into the night to code and presented their prototypes to our judges. GameHouse, Tien Len, Attributor and GameFace.me took home prizes for the most innovative hacks.</p>
652
+
653
+ <p><a href="http://www.gamehouse.com/">GameHouse</a> built a social bubble-shooter game where friends can challenge each other, and results are published via the Open Graph. Tien Len incorporated Achievements into their <a href="http://apps.facebook.com/multiplayer_tienlen/">HTML5 card game</a> and pushed it live at the event! Attributor built an Open Graph integration for their <a href="https://apps.facebook.com/shelflife/">Shelflife app</a> that published stories when users added books to their shelf while <a href="http://gameface.me">GameFace.me</a> personalized characters in a user's game based on friends' profile pictures and sent brag stories to those friends' News Feeds.</p>
654
+
655
+ <p>We're focused on continuing to build features and tools for game developers to help them be successful, such as <a href="https://developers.facebook.com/blog/post/549/">Fluid Canvas</a>, <a href="https://developers.facebook.com/docs/score/">Scores</a>, <a href="https://developers.facebook.com/docs/achievements/">Achievements</a>, and the <a href="https://developers.facebook.com/docs/guides/canvas/">canvas ticker</a>, as well as <a href="https://developers.facebook.com/docs/beta/">Open Graph</a> and <a href="https://developers.facebook.com/docs/guides/mobile/">mobile platform</a>. We look forward to seeing how you use the power of these new tools to enable users to share and connect around what they value most about their game experience. </p>
656
+
657
+ <p>To stay updated on the latest games news, like the <a href="https://www.facebook.com/fbandgames">Facebook + Games Page</a>. Please provide thoughts and feedback in the comments below. </p>
658
+ </div>]]></content>
659
+ </entry>
660
+ </feed>
metadata CHANGED
@@ -1,62 +1,46 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: feed_parser
3
- version: !ruby/object:Gem::Version
4
- hash: 31
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.5
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 4
10
- version: 0.2.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Arttu Tervo
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-12-08 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
12
+ date: 2012-01-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
31
15
  name: nokogiri
32
- prerelease: false
16
+ requirement: &2153380980 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
33
22
  type: :runtime
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ version_requirements: *2153380980
25
+ - !ruby/object:Gem::Dependency
26
+ name: rspec-rails
27
+ requirement: &2153380300 !ruby/object:Gem::Requirement
37
28
  none: false
38
- requirements:
29
+ requirements:
39
30
  - - ~>
40
- - !ruby/object:Gem::Version
41
- hash: 15
42
- segments:
43
- - 2
44
- - 6
45
- version: "2.6"
46
- name: rspec-rails
47
- prerelease: false
31
+ - !ruby/object:Gem::Version
32
+ version: '2.6'
48
33
  type: :development
49
- requirement: *id002
34
+ prerelease: false
35
+ version_requirements: *2153380300
50
36
  description: Rss and Atom feed parser with sanitizer support built on top of Nokogiri.
51
- email:
37
+ email:
52
38
  - arttu.tervo@gmail.com
53
39
  executables: []
54
-
55
40
  extensions: []
56
-
57
- extra_rdoc_files:
41
+ extra_rdoc_files:
58
42
  - README.md
59
- files:
43
+ files:
60
44
  - .gitignore
61
45
  - Gemfile
62
46
  - LICENSE
@@ -70,48 +54,43 @@ files:
70
54
  - spec/feed_parser_spec.rb
71
55
  - spec/fixtures/TechCrunch.xml
72
56
  - spec/fixtures/basecamp.rss.xml
57
+ - spec/fixtures/facebook.atom.xml
73
58
  - spec/fixtures/gcal.atom.xml
74
59
  - spec/fixtures/nodeta.rss.xml
75
60
  - spec/fixtures/sanitize.me.rss.xml
76
61
  - spec/fixtures/smashingmagazine.atom.xml
77
- has_rdoc: true
78
62
  homepage: http://github.com/arttu/feed_parser
79
63
  licenses: []
80
-
81
64
  post_install_message:
82
65
  rdoc_options: []
83
-
84
- require_paths:
66
+ require_paths:
85
67
  - lib
86
- required_ruby_version: !ruby/object:Gem::Requirement
68
+ required_ruby_version: !ruby/object:Gem::Requirement
87
69
  none: false
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- hash: 3
92
- segments:
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ segments:
93
75
  - 0
94
- version: "0"
95
- required_rubygems_version: !ruby/object:Gem::Requirement
76
+ hash: -3280497308779213588
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
78
  none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- hash: 3
101
- segments:
102
- - 0
103
- version: "0"
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
104
83
  requirements: []
105
-
106
84
  rubyforge_project:
107
- rubygems_version: 1.5.2
85
+ rubygems_version: 1.8.11
108
86
  signing_key:
109
87
  specification_version: 3
110
88
  summary: Rss and Atom feed parser
111
- test_files:
89
+ test_files:
112
90
  - spec/feed_parser_spec.rb
113
91
  - spec/fixtures/TechCrunch.xml
114
92
  - spec/fixtures/basecamp.rss.xml
93
+ - spec/fixtures/facebook.atom.xml
115
94
  - spec/fixtures/gcal.atom.xml
116
95
  - spec/fixtures/nodeta.rss.xml
117
96
  - spec/fixtures/sanitize.me.rss.xml