<?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>Facebook SDK &#8211; 記下來</title>
	<atom:link href="https://noter.tw/tag/facebook-sdk/feed/" rel="self" type="application/rss+xml" />
	<link>https://noter.tw</link>
	<description>一路上踩到的坑、遇到的問題，一點一滴記下來，希望能幫助到需要的人~</description>
	<lastBuildDate>Wed, 04 Dec 2019 00:56:08 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.3</generator>

<image>
	<url>https://noter.tw/wp-content/uploads/cropped-old-1130742_1920-1-32x32.jpg</url>
	<title>Facebook SDK &#8211; 記下來</title>
	<link>https://noter.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>排程自動更新 Facebook Token</title>
		<link>https://noter.tw/6574/%e6%8e%92%e7%a8%8b%e8%87%aa%e5%8b%95%e6%9b%b4%e6%96%b0-facebook-token/</link>
					<comments>https://noter.tw/6574/%e6%8e%92%e7%a8%8b%e8%87%aa%e5%8b%95%e6%9b%b4%e6%96%b0-facebook-token/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Thu, 21 Nov 2019 05:45:59 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[其他]]></category>
		<category><![CDATA[token]]></category>
		<category><![CDATA[auto renew]]></category>
		<category><![CDATA[fb_exchange_token]]></category>
		<category><![CDATA[OpenGraph]]></category>
		<category><![CDATA[access_token]]></category>
		<category><![CDATA[權杖]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[Facebook SDK]]></category>
		<category><![CDATA[自動更新]]></category>
		<guid isPermaLink="false">https://noter.tw/?p=6574</guid>

					<description><![CDATA[<p>小蛙負責的系統中，有一個後台需要定期去撈 Facebook 的資料，撈資料的時候需要 Facebook Token，而這個 token 之前都是到期後，小蛙手動去申請或展延，雖然很快，但是就是感覺麻煩&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/6574/%e6%8e%92%e7%a8%8b%e8%87%aa%e5%8b%95%e6%9b%b4%e6%96%b0-facebook-token/" data-wpel-link="internal">排程自動更新 Facebook Token</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>小蛙負責的系統中，有一個後台需要定期去撈 Facebook 的資料，撈資料的時候需要 Facebook Token，而這個 token 之前都是到期後，小蛙手動去申請或展延，雖然很快，但是就是感覺麻煩，如果忘記了後台會撈不到資料 &#8230;</p>



<span id="more-6574"></span>



<p>昨天要下班前又過期了，早上實在受不了，花一點時間 survey 相關資料，來讓他自動展延～這邊先說明小蛙的環境，主要的 code 會放在下面，再依照自己的需求修改使用。</p>



<ul class="my-li bg-darkblue wp-block-list"><li>crontab -e 每兩個月（或每一個月）去做更新</li><li>更新時需要拿舊的 token 去換新的回來</li><li>將取回的新 token 存到一個檔案</li><li>JSP 後台則從上述檔案中取得 token 以做後續處理</li></ul>



<p>大概了解小蛙要做的事情之後就開始吧！</p>



<h2 class="para wp-block-heading">建立 token 檔案</h2>



<p>小蛙把 token 放在 JSP 專案下的某個目錄，例如：WEB-INF/conf/token，把現有存活可用的 token 先貼進去，小蛙是直接把 facebook 回傳的 json 處理好之後，只留 token，不留其他 json 資訊（當然你要把 facebook 回傳的 json 全部留下來，之後在程式中處理也是可以，不過下次要更新的時候就要在 bash 中處理）</p>



<h2 class="para wp-block-heading">撰寫 bash 及加入排程</h2>



<p>建立一個新檔案 update_fb_token.sh，並填入以下內容，這裡的重點只有 Facebook 那串網址，其他的部份根據自己的需求修改即可</p>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">#!/bin/bash
otoken="$(head -n 1 上面建立的token位置)"
url="https://graph.facebook.com/oauth/access_token?client_id=你的app_id&amp;client_secret=fb後台登入後可以看到&amp;grant_type=fb_exchange_token&amp;fb_exchange_token=$otoken"
json=$(curl -X GET $url)
ntoken=$(echo $json | sed -E 's/.*"access_token":"([^"]*).*/\1/')
if [ ! -z "$ntoken" ]
then
        echo $ntoken &gt; 上面建立的token位置
fi</pre>



<p>上面的步驟簡單說一下，首先從本機 token 位置中讀取目前 token，連同 client_id、client_secret（這兩個 Facebook 後台都可以找到）去跟 Facebook 要一個新的 token，取得 Facebook 回傳的 json 後，小蛙只有簡單判斷能不能取到  access_token，如果有的話用 sed 擷取出來，並判斷不為空的話才更新到本機的 token 檔案裡，這裡可以根據自己的需求去做額外處理。</p>



<p>設定為可執行然後加入到 crontabe -e 定期執行</p>



<pre class="wp-block-preformatted wp-block-syntaxhighlighter-code">chmod +x update_fb_token.sh
crontab -e
# 每月 20 號 0:00 執行
0 0 20 * * /root/update_fb_token.sh</pre>



<h2 class="para wp-block-heading">怎麼使用</h2>



<p>小蛙這篇不打算講 OpenGraph 要怎麼使用，只是針對既有使用 OpenGraph 要每兩個月更新 token 的麻煩事，做了一個取巧的排程解法～已經把 token 存到一個指定的路徑中了，只要在使用 Facebook SDK 的地方，修改成動態載入這個 token 就可以正常運行了！省了很多麻煩～～</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/6574/%e6%8e%92%e7%a8%8b%e8%87%aa%e5%8b%95%e6%9b%b4%e6%96%b0-facebook-token/" data-wpel-link="internal">排程自動更新 Facebook Token</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/6574/%e6%8e%92%e7%a8%8b%e8%87%aa%e5%8b%95%e6%9b%b4%e6%96%b0-facebook-token/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
