<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diz blog &#187; Php</title>
	<atom:link href="http://diz-blog.com.ua/category/programming/php/feed" rel="self" type="application/rss+xml" />
	<link>http://diz-blog.com.ua</link>
	<description>Web-программирование, php скрипты, блоггинг, заработок в сети, WordPress, SEO, SMO.</description>
	<lastBuildDate>Thu, 02 Jun 2011 20:04:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Просмотр закрытых вконтакте страниц</title>
		<link>http://diz-blog.com.ua/view-closed-pages-vkontakte.html</link>
		<comments>http://diz-blog.com.ua/view-closed-pages-vkontakte.html#comments</comments>
		<pubDate>Thu, 14 Oct 2010 17:39:25 +0000</pubDate>
		<dc:creator>Diz</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[vkontakte]]></category>
		<category><![CDATA[социальные сети]]></category>

		<guid isPermaLink="false">http://diz-blog.com.ua/?p=1540</guid>
		<description><![CDATA[Пост является продолжением темы и предназначается людям желающих смотреть закрытые вконтакте страницы.


Сегодня представлю утилитку (ссылка внизу) для онлайн просмотра закрытых:

Фотоальбомов
Фотографий, на которых пользователь отмечен
Видео
Видео, на которых пользователь отмечен
Аудио
Приложений
Стен
Заметок
Вопросов
Групп
Рейтингов
Подарков



Основное отличие от предыдущей версии, заключается в том что утилита:

Отображает только те разделы профиля которые реально открыты, а не все подряд
Помимо указания ид пользователя, можно задать и короткое [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Пост является продолжением <a href="http://diz-blog.com.ua/view-hidden-pages-vkontakte.html">темы</a> и предназначается людям желающих смотреть <strong>закрытые вконтакте страницы</strong>.</p>
<p><span id="more-1540"></span></p>
<p style="text-align: justify;">
Сегодня представлю утилитку (ссылка внизу) для онлайн просмотра закрытых:</p>
<ul>
<li>Фотоальбомов</li>
<li>Фотографий, на которых пользователь отмечен</li>
<li>Видео</li>
<li>Видео, на которых пользователь отмечен</li>
<li>Аудио</li>
<li>Приложений</li>
<li>Стен</li>
<li>Заметок</li>
<li>Вопросов</li>
<li>Групп</li>
<li>Рейтингов</li>
<li>Подарков</li>
</ul>
<p style="text-align: center;"><img src="http://diz-blog.com.ua/wp-content/uploads/2010/09/vk-view-hidden-pages.gif" alt="Просмотр закрытых страниц вконтакте" title="Просмотр закрытых страниц вконтакте" width="171" height="98" class="size-full wp-image-1625" align="center"/></p>
<p style="text-align: justify;">
Основное отличие от предыдущей версии, заключается в том что утилита:</p>
<ul>
<li>Отображает только те разделы профиля которые реально открыты, а не все подряд</li>
<li>Помимо указания ид пользователя, можно задать и короткое имя</li>
</ul>
<p style="text-align: center;"><a href="http://diz-blog.com.ua/soft/vk_view_hidden/index.php">Смотрим страницы вконтакте</a></p>
<p>Надумали продавать свой сайт? Интересные <a href=http://seomoney.me/zarabotok-v-internete/sovety-po-prodazhe-svoix-proektov>советы по продаже своих проектов</a>. Вам будет это интересно.</p>
]]></content:encoded>
			<wfw:commentRss>http://diz-blog.com.ua/view-closed-pages-vkontakte.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>OAuth 2.0 аутентификация приложений в Facebook</title>
		<link>http://diz-blog.com.ua/oauth-authentication-facebook-apps.html</link>
		<comments>http://diz-blog.com.ua/oauth-authentication-facebook-apps.html#comments</comments>
		<pubDate>Fri, 24 Sep 2010 11:58:14 +0000</pubDate>
		<dc:creator>Diz</dc:creator>
				<category><![CDATA[Php]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[oauth]]></category>

		<guid isPermaLink="false">http://diz-blog.com.ua/?p=1570</guid>
		<description><![CDATA[Используемый Facebook протокол OAuth версии 2.0 позволяет за счет SSL упростить схему аутентификации пользователя. Суть сводится к получению маркера доступа (access token) и дальнейшей отсылке ее обратно во всех последующих информационных запросах. Чтобы получить access token необходимо выполнить следующие действия:


Зарегистрировать приложение и получить Application ID (client_id) и Application Secret (client_secret)
Переадресовать посетителя, указав client_id, полученный на [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Используемый Facebook протокол OAuth версии 2.0 позволяет за счет SSL упростить схему аутентификации пользователя. Суть сводится к получению маркера доступа (access token) и дальнейшей отсылке ее обратно во всех последующих информационных запросах. Чтобы получить <em>access token</em> необходимо выполнить следующие действия:<br />
<span id="more-1570"></span></p>
<ol>
<li><a href="http://developers.facebook.com/setup/">Зарегистрировать приложение</a> и получить <em>Application ID (client_id)</em> и <em>Application Secret (client_secret)</em><img src="http://diz-blog.com.ua/wp-content/uploads/2010/09/facebook_app_settings.gif" alt="Facebook настройка приложения" title="Facebook настройка приложения" width="530" height="384" class="size-full wp-image-1604" /></li>
<li>Переадресовать посетителя, указав <em>client_id</em>, полученный на предыдущем шаге, и <em>redirect_uri</em>, по адресу:

<div class="wp_codebox"><table><tr id="p15706"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p1570code6"><pre class="text" style="font-family:monospace;">https://graph.facebook.com/oauth/authorize?
client_id=...&amp;
redirect_uri=http://yourdomain.com</pre></td></tr></table></div>

<p>Где ему будет предложено ввести логин и пароль.</li>
<li>В случае успешной авторизации facebook перенаправит пользователя по адресу указанному в <em>redirect_uri</em> с параметром <em>$_GET['code']</em>, который меняется на <em>access token</em> следующим запросом:

<div class="wp_codebox"><table><tr id="p15707"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p1570code7"><pre class="text" style="font-family:monospace;">https://graph.facebook.com/oauth/access_token?
client_id=...&amp;
redirect_uri=http://youdomain.com/oauth_redirect&amp;
client_secret=...&amp;
code=...</pre></td></tr></table></div>

</li>
<li>Далее используем <em>access token</em> во всех запросах:

<div class="wp_codebox"><table><tr id="p15708"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p1570code8"><pre class="text" style="font-family:monospace;">https://api.facebook.com/method/stream.publish?
message=Hello&amp;
access_token=...</pre></td></tr></table></div>

</li>
</ol>
<p style="text-align: justify;">Пример <strong>oauth 2.0 аутентификации в facebook</strong>:</p>

<div class="wp_codebox"><table><tr id="p15709"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code" id="p1570code9"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'facebookoauth.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Параметры получаемые при регистрации приложения</span>
<span style="color: #000088;">$facebook_client_id</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//заполнить значение!!!</span>
<span style="color: #000088;">$facebook_client_secret</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//заполнить значение!!!</span>
&nbsp;
<span style="color: #000088;">$oauth</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> FacebookOAuth<span style="color: #009900;">&#40;</span><span style="color: #000088;">$facebook_client_id</span><span style="color: #339933;">,</span><span style="color: #000088;">$facebook_client_secret</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;access_token&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$callbackUrl</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;http://&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'HTTP_HOST'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #000088;">$_SERVER</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'SCRIPT_NAME'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;?facebook_callback&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Получаем &quot;code&quot;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'facebook_connect'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>	
	<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$request_link</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oauth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getCodeUrl</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$callbackUrl</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Location: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$request_link</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//Получаем &quot;access_token&quot; и сохр. в сессионной переменной</span>
<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'facebook_callback'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'code'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;access_token&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$oauth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getAccessToken</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$callbackUrl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'code'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000088;">$callbackUrl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #666666; font-style: italic;">//Если &quot;access_token&quot; получен, выполняем запросы к facebook</span>
<span style="color: #b1b100;">else</span>
<span style="color: #009900;">&#123;</span>
<span style="color: #666666; font-style: italic;">//Функция получения списка страниц пользователя</span>
<span style="color: #000088;">$res</span><span style="color: #339933;">=</span><span style="color: #000088;">$oauth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">pagesGetInfo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;access_token&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$res</span><span style="color: #339933;">=</span><span style="color: #000088;">$oauth</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">streamPublish</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Hello&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;access_token&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

</p>
<p style="text-align: justify;">В этом примере используется класс <em>FacebookOAuth</em> и его методы: <em>getCodeUrl()</em> &#8211; формирование урла (см. п.2), <em>getAccessToken()</em> &#8211; получение <em>access token</em> (см. п.3), <em>pagesGetInfo()</em> &#8211; получение информации о существующих страницах пользователя (см. п.4), <em>streamPublish()</em> &#8211; публикация сообщения на стене или странице пользователя (см. п.4)</p>
<p style="text-align: justify;">А вот и сам класс <em>FacebookOAuth</em>:</p>

<div class="wp_codebox"><table><tr id="p157010"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
</pre></td><td class="code" id="p1570code10"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;">class</span> FacebookOAuth
<span style="color: #009900;">&#123;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$auth_base_url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;https://graph.facebook.com&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$api_base_url</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;https://api.facebook.com&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$client_id</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$client_secret</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$redirect_uri</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$client_id</span><span style="color: #339933;">,</span><span style="color: #000088;">$client_secret</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">client_id</span> 	<span style="color: #339933;">=</span> <span style="color: #000088;">$client_id</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">client_secret</span> 	<span style="color: #339933;">=</span> <span style="color: #000088;">$client_secret</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> makeRequest <span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$callbackurl</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$ch</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_FOLLOWLOCATION<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_REFERER<span style="color: #339933;">,</span> <span style="color: #000088;">$callbackurl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_HEADER<span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
	<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_SSL_VERIFYPEER<span style="color: #339933;">,</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$result</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> 
		<span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">curl_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #990000;">curl_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$result</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getCodeUrl<span style="color: #009900;">&#40;</span><span style="color: #000088;">$redirect_uri</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">auth_base_url</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/oauth/authorize?client_id=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">client_id</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;redirect_uri=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$redirect_uri</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;scope=offline_access,publish_stream&amp;display=popup&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>    
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> getAccessToken<span style="color: #009900;">&#40;</span><span style="color: #000088;">$redirect_uri</span><span style="color: #339933;">,</span><span style="color: #000088;">$code</span><span style="color: #339933;">,</span><span style="color: #000088;">$callbackurl</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">makeRequest</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">auth_base_url</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/oauth/access_token?client_id=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">client_id</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;redirect_uri=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$redirect_uri</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;client_secret=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">client_secret</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;code=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$code</span><span style="color: #339933;">,</span> <span style="color: #000088;">$callbackurl</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$st</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;=&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$pos</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #339933;">,</span><span style="color: #000088;">$st</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$res</span><span style="color: #339933;">,</span><span style="color: #000088;">$pos</span><span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$res</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> streamPublish<span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #339933;">,</span><span style="color: #000088;">$access_token</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$access_token</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">makeRequest</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">api_base_url</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/method/stream.publish?message=&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$msg</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;access_token=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$access_token</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #990000;">preg_match_all</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/&lt;stream_publish_response[^&gt;]*&gt;(.*?)&lt;\/stream_publish_response&gt;/si&quot;</span><span style="color: #339933;">,</span><span style="color: #000088;">$res</span><span style="color: #339933;">,</span><span style="color: #000088;">$matches</span><span style="color: #339933;">,</span> PREG_PATTERN_ORDER<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>	
		<span style="color: #009900;">&#123;</span>	
		<span style="color: #666666; font-style: italic;">//return post id</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$matches</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #b1b100;">else</span>
		<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> pagesGetInfo<span style="color: #009900;">&#40;</span><span style="color: #000088;">$access_token</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$access_token</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
	<span style="color: #000088;">$res</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">makeRequest</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">api_base_url</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;/method/pages.getinfo?access_token=&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$access_token</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&amp;fields=page_id,name,page_url&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$res</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span> 
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

</p>
<p style="text-align: justify;">P.S. По умолчанию <em>access token</em> выдается на определенное время, по завершению которого пользователю придется вновь авторизоваться. Чтобы этого избежать необходимо на шаге переадресации (см. п.2) дополнительно в урле передать параметр <em>offline_access</em> (см. метод <em>getCodeUrl()</em>).</p>
<p style="text-align: center;">
<a href="http://developers.facebook.com/docs/authentication/">Authentication Facebook Developers</a><br />
<a href="http://diz-blog.com.ua/files/oauth-facebook.zip" >Скачать пример</a></p>
]]></content:encoded>
			<wfw:commentRss>http://diz-blog.com.ua/oauth-authentication-facebook-apps.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>$_REQUEST[session_name()] оказался пуст. Что делать?</title>
		<link>http://diz-blog.com.ua/request-session-name-empty-what-do.html</link>
		<comments>http://diz-blog.com.ua/request-session-name-empty-what-do.html#comments</comments>
		<pubDate>Mon, 06 Sep 2010 15:20:53 +0000</pubDate>
		<dc:creator>Diz</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://diz-blog.com.ua/?p=1543</guid>
		<description><![CDATA[В своих проектах, где необходимо авторизовать пользователя, я пользуюсь старым добрым механизмом PHP сессий. На страницах которые требуется показывать как посетителям прошедшим авторизацию, так и нет, в самом начале кода применяю такую конструкцию:

1
if &#40;isset&#40;$_REQUEST&#91;session_name&#40;&#41;&#93;&#41;&#41; session_start&#40;&#41;;

В этом случае, в отличии от простого вызова функции session_start(), сессия стартанет только если браузером был прислан идентификатор сессии. Т.е. например [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">В своих проектах, где необходимо авторизовать пользователя, я пользуюсь старым добрым механизмом PHP сессий. На страницах которые требуется показывать как посетителям прошедшим авторизацию, так и нет, в самом начале кода применяю такую конструкцию:</p>

<div class="wp_codebox"><table><tr id="p154312"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p1543code12"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_REQUEST</span><span style="color: #009900;">&#91;</span><span style="color: #990000;">session_name</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #990000;">session_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p style="text-align: justify;">В этом случае, в отличии от простого вызова функции <em>session_start()</em>, сессия стартанет только если браузером был прислан идентификатор сессии. Т.е. например если посетитель ранее успешно залогинился, то на странице будут доступны сессионные переменные, а если нет то вообще говоря сессия не будет здесь активна.</p>
<p><span id="more-1543"></span></p>
<p style="text-align: justify;">Благодаря тому что сессия не запускается без разбору, немного снижается нагрузка на сервер и решается проблема появления в поисковиках адресов страниц с переменной PHPSESSID в конце.</p>
<p style="text-align: justify;">Недавно в результате переустановки php на локальной машине сессии перестали работать. Более детальное изучение показало, что с ними все нормально, а все дело в том что глобальный массив <strong>$_REQUEST</strong> просто напросто пуст, вернее никаких сессионных переменных в нем нет. Глянув файл <em>php.ini</em> , я обнаружил строки:</p>
<p style="text-align: justify;"><em>; This directive determines which super global data (G,P,C,E &#038; S) should<br />
; be registered into the super global array REQUEST. If so, it also determines<br />
; the order in which that data is registered. The values for this directive are<br />
; specified in the same manner as the variables_order directive, EXCEPT one.<br />
; Leaving this value empty will cause PHP to use the value set in the<br />
; variables_order directive. It does not mean it will leave the super globals<br />
; array REQUEST empty.<br />
; Default Value: None<br />
; Development Value: &#8220;GP&#8221;<br />
; Production Value: &#8220;GP&#8221;<br />
; http://php.net/request-order<br />
<strong>request_order = &#8220;GP&#8221;</strong></em></p>
<p style="text-align: justify;">Значение <em>&#8220;GP&#8221;</em> параметра <em>request_order</em> говорит о том, что в массив $_REQUEST будут заноситься только $_GET или $_POST, получается если переменная передается через $_COOKIE, а в нашем случаем с PHPSESSID именно так и происходит, то она в массиве не будет доступна. Для того чтобы добавить в <strong>$_REQUEST</strong> переменные из $_COOKIE, изменим ее на:<br /> <strong>request_order = &#8220;GPС&#8221;</strong><br />И все заработает.</p>
]]></content:encoded>
			<wfw:commentRss>http://diz-blog.com.ua/request-session-name-empty-what-do.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- www.000webhost.com Analytics Code -->
<script type="text/javascript" src="http://analytics.hosting24.com/count.php"></script>
<noscript><a href="http://www.hosting24.com/"><img src="http://analytics.hosting24.com/count.php" alt="web hosting" /></a></noscript>
<!-- End Of Analytics Code -->

