You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

543 lines
20 KiB

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!doctype html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="author" content="Lednerb">
<meta name="description" content="Bilberry Premium Theme for Hugo.">
<meta name="keywords" content="blog,personal,responsive,search,font awesome,pages,posts,multilingual,highlight.js,syntax highlighting,premium,shortcuts">
<meta name="generator" content="Hugo 0.50" />
<title> [筆記]設定Google API 讓OwnCloud 可以提供 External Storage 服務 | My cool new Blog</title>
<meta name="description" content="[筆記]設定Google API 讓OwnCloud 可以提供 External Storage 服務 - Bilberry Premium Theme for Hugo.">
<meta itemprop="name" content="[筆記]設定Google API 讓OwnCloud 可以提供 External Storage 服務">
<meta itemprop="description" content="[筆記]設定Google API 讓OwnCloud 可以提供 External Storage 服務 - Bilberry Premium Theme for Hugo.">
<meta property="og:title" content="[筆記]設定Google API 讓OwnCloud 可以提供 External Storage 服務">
<meta property="og:description" content="[筆記]設定Google API 讓OwnCloud 可以提供 External Storage 服務 - Bilberry Premium Theme for Hugo.">
<meta property="og:image" content="https://www.gravatar.com/avatar/88188b6cc451928eba90e8400bc68086?size=200">
<meta property="og:url" content="https://h.cowbay.org/article/e7-ad-86-e8-a8-98-e8-a8-ad-e5-ae-9agoogle-api-e8-ae-93owncloud-e5-8f-af-e4-bb-a5-e6-8f-90-e4-be-9b-external-storage-e6-9c-8d-e5-8b-99/">
<meta property="og:site_name" content="My cool new Blog">
<meta property="og:type" content="article">
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-32x32.png" sizes="32x32">
<link rel="icon" type="image/png" href="https://h.cowbay.org/favicon-16x16.png" sizes="16x16">
<link rel="stylesheet" href="https://h.cowbay.org/sass/combined.min.717098cb5503581e75f12e486a847ca410bf8367d4d8713f4c37affc868c5a1d.css">
</head>
<body class="bilberry-hugo-theme">
<nav>
<div class="container">
<ul class="topnav">
<li><a href="/page/about-bilberry/">About Bilberry</a></li>
<li><a href="https://github.com/Lednerb/bilberry-hugo-theme" target="_blank">Github</a></li>
</ul>
<div id="search-box" class="search">
<i class="fa fa-search"></i>
<input id="search" type="text" placeholder="Search ...">
</div>
</div>
</nav>
<header>
<div class="container">
<div class="logo">
<a href="/" class="logo">
<img src="https://www.gravatar.com/avatar/88188b6cc451928eba90e8400bc68086?d=mm&size=200" alt="">
<span class="overlay"><i class="fa fa-home"></i></span>
</a>
</div>
<div class="titles">
<h3 class="title"><a href="/">My cool new Blog</a></h3>
<span class="subtitle">Hello World! This is the most epic subtitle ever.</span>
</div>
<div class="languages">
<a href="/en" class="active">en</a>
<a href="/de">de</a>
</div>
<div class="toggler">
<i class="fa fa-bars" aria-hidden="true"></i>
</div>
</div>
</header>
<div class="main container">
<div class="article-wrapper u-cf single">
<a class="bubble" href="/article/e7-ad-86-e8-a8-98-e8-a8-ad-e5-ae-9agoogle-api-e8-ae-93owncloud-e5-8f-af-e4-bb-a5-e6-8f-90-e4-be-9b-external-storage-e6-9c-8d-e5-8b-99/">
<i class="fa fa-fw fa-pencil"></i>
</a>
<article class="default article">
<div class="content">
<h3><a href="/article/e7-ad-86-e8-a8-98-e8-a8-ad-e5-ae-9agoogle-api-e8-ae-93owncloud-e5-8f-af-e4-bb-a5-e6-8f-90-e4-be-9b-external-storage-e6-9c-8d-e5-8b-99/">[筆記]設定Google API 讓OwnCloud 可以提供 External Storage 服務</a></h3>
<div class="meta">
<span class="date moment">2015-01-13</span>
<span class="categories">
<a href="/categories/%E5%B7%A5%E4%BD%9C%E7%AD%86%E8%A8%98">工作筆記</a>
</span>
</div>
<h1 id="設定google-api-讓owncloud-可以提供-external-storage-服務">設定Google API 讓OwnCloud 可以提供 External Storage 服務</h1>
<p>之前因為要測試私有雲的關係,所以弄了一台 OwnCloud 起來玩</p>
<p>但是因為機器放在ESXI 上,已經沒有太大的空間可以來丟東西,而且畢竟只是測試用,開那麼大的空間好像也不太對</p>
<p>後來看到一些文章說OwnCloud 有支援External Storage 的選項可以把Amazon S3 / Google Drive/WebDAV 這些空間MOUNT進來變成自己的儲存空間</p>
<p>形成一個沒有 local storage 的private cloud</p>
<p>底下簡單說明測試 設定Google API 讓OwnCloud 可以提供 External Storage 服務 的步驟</p>
<p>owncloud 基本安裝設定可以參考 <a href="http://www.cowbay.org/?p=873"> [筆記] CENTOS 7+OWNCLOUD+LDAP+AD</a> 認證設定 這篇</p>
<p>&nbsp;</p>
<hr />
<p>&nbsp;</p>
<p>登入OwnCloud 的管理者介面,到應用程式確認 External Storage 選項有啟用 p.s 不知道為何,要進入應用程式這個選項都要很久很久&hellip;.</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-18-57.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-18-57.png" alt="2015-01-13_17-18-57" /></a></p>
<p>再來先登入 Google Develop Console選擇左邊選單的API和驗證&ndash;&gt;API ,當然前提是在這邊要先建立好專案等等的基本設定,這部分就不多提</p>
<p>點API之後右邊會列出現在系統上有提供的API預設應該是沒有啟用 Drive API / Drive SDK</p>
<p>所以要去啟用,</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-57-40.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-57-40-1024x402.png" alt="2015-01-13_16-57-40" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>啟用之後,在畫面上就可以看到 Drive API 之後多了個齒輪的圖示</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-58-12.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-58-12.png" alt="2015-01-13_16-58-12" /></a></p>
<p>點齒輪進去看看狀況!</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-58-21.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-58-21.png" alt="2015-01-13_16-58-21" /></a></p>
<p>沒有啥東西,所以點那個前往原始控制台看看,這裡就有一些選項需要設定了</p>
<p>首先輸入 Application Name 然後要選擇Icon</p>
<p>下面還有一些選項可以看情況決定要不要點選不過就算都沒勾選也不會影響owncloud 作業就是</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-59-03.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_16-59-03.png" alt="2015-01-13_16-59-03" /></a></p>
<p>&nbsp;</p>
<p>Open URL 是必填選項不過因為不知道要填什麼所以我把等下才要用到的URL貼過來</p>
<p><a href="http://you_owncloud_server_hostname/owncloud/index.php/settings/personal">http://you_owncloud_server_hostname/owncloud/index.php/settings/personal</a></p>
<p>&nbsp;</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-00-09.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-00-09.png" alt="2015-01-13_17-00-09" /></a></p>
<p>&nbsp;</p>
<p>存檔之後,進行下一步</p>
<p>在左邊選單選擇 API Access ,然後點選那個大大的藍色的 Create an OAuth 2.0 client ID</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-00-59.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-00-59.png" alt="2015-01-13_17-00-59" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>接下來要填一些選項, Application type 選 Web application</p>
<p>其他部分其實可以先不管,等下再來修改。</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-01-351.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-01-351-1024x618.png" alt="2015-01-13_17-01-35" /></a></p>
<p>&nbsp;</p>
<p>上面的步驟完成後,就會看到底下片這樣的畫面,右邊會有個 edit setting ,進去編輯</p>
<p>&nbsp;</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-02-40.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-02-40-1024x477.png" alt="2015-01-13_17-02-40" /></a></p>
<p>&nbsp;</p>
<p>編輯 Authorized Redirect URIs</p>
<p>這邊參考官方文件 <a href="http://doc.owncloud.org/server/6.0/user_manual/external_storage/google_drive.html">http://doc.owncloud.org/server/6.0/user_manual/external_storage/google_drive.html</a></p>
<p>需要輸入
&gt; <pre><a href="https://your-internet-domain/owncloud/index.php/settings/personal">https://your-internet-domain/owncloud/index.php/settings/personal</a>
&gt;
&gt; <a href="https://your-internet-domain/owncloud/index.php/settings/admin">https://your-internet-domain/owncloud/index.php/settings/admin</a></pre>
有沒有 https 無所謂,重點是你要能夠用 hostname 連這台 OwnCloud ,不能用 IP (不管是 Public / Private 都不行google API 不接受 )
下面那個 Authorized Java Script 就不管他了,預設會幫你改成上面的 hostname ,我是順手再把他改回 example.com<img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-36-03.png" alt="2015-01-13_17-36-03" /></p>
<p>&nbsp;</p>
<p>接著回到 OwnCloud 的管理介面</p>
<p>在External Storage 部分選擇新增 類型選擇 Google Drive</p>
<p>再填入 Client ID和 Client Secret ,這邊要特別注意複製、貼上時候是不是選擇了完整的字串,不能多也不能少</p>
<p>曾經在這邊卡關一個多小時,一直認證失敗,後來發現網路上有人說 Client Secret 最後面會多一個空格,要手動刪除&hellip;&hellip;..</p>
<p>不過我後續操作也沒有碰到類似狀況了(Google 好像還在持續改操作介面,寫這篇的時候,跟我最早開始操作的畫面就不太一樣)</p>
<p>總之,要複製貼上時,最好都先貼到記事本去確認</p>
<p>輸入完 Client ID / Client Secret 之後,點一下允許存取,會跳到 Google 要求驗證的畫面,在那邊點確定(忘了截圖)</p>
<p>再回來看,就可以看到燈號變成綠色,可以運作了。</p>
<p>繼續指定這個空間給要開放的群組,設定就算完成了。</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-42-17.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-42-17-1024x156.png" alt="2015-01-13_17-42-17" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>測試一下在網頁上新增一個  test.txt ,在 Client 端當然也會跟著自動更新!</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-46-50.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-46-50.png" alt="2015-01-13_17-46-50" /></a></p>
<p>&nbsp;</p>
<p>不過不知道為什麼,這次的同步時間比較久,記得上次測試是正常的,可能還要再觀察看看!</p>
<p>底下是分別在 Server上傳一個 1.png &amp; 在 Client 貼上一個 png 檔案後的狀況,還是可以同步,但是中間大概等了一分鐘&hellip;(是我太貪心了嗎? &hellip;.)</p>
<p><a href="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-52-27.png"><img src="http://www.cowbay.org/wp-content/uploads/2015/01/2015-01-13_17-52-27.png" alt="2015-01-13_17-52-27" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<div class="footer no-tags">
</div>
</article>
</div>
<div id="disqus_thread"></div>
<script type="application/javascript">
var disqus_config = function () {
};
(function() {
if (["localhost", "127.0.0.1"].indexOf(window.location.hostname) != -1) {
document.getElementById('disqus_thread').innerHTML = 'Disqus comments not available by default when the website is previewed locally.';
return;
}
var d = document, s = d.createElement('script'); s.async = true;
s.src = '//' + "bilberry-hugo-theme" + '.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="https://disqus.com" class="dsq-brlink">comments powered by <span class="logo-disqus">Disqus</span></a>
</div>
<footer>
<div class="container">
<div class="recent-posts">
<strong>Latest posts</strong>
<ul>
<li>
<a href="/article/google-550-5-7-1-sloution/">寄信給google被退信 錯誤 550-5.7.1的解法</a>
</li>
<li>
<a href="/article/netdata-linux-system-performance-monitor-dashboard/">Netdata Linux System Performance Monitor Dashboard</a>
</li>
<li>
<a href="/article/linux-performance-monitor-dashboard-netdata-md/">Linux 底下極其詳細的System performace Monitor Dashboard - Netdata</a>
</li>
<li>
<a href="/article/syntax-test/">Syntax Test</a>
</li>
<li>
<a href="/article/psql-create-role-and-assign-priviledges/">psql create role and assign priviledges</a>
</li>
<li>
<a href="/article/study-url/">Study URL</a>
</li>
<li>
<a href="/article/rsync-time-backup/">[筆記] Linux 底下好用的備份工具 rsync-time-backup</a>
</li>
</ul>
</div>
<div class="categories">
<a href="/categories/"><strong>Categories</strong></a>
<ul>
<li>
<a href="/categories/%E6%9C%AA%E5%88%86%E9%A1%9E">未分類 (86)</a>
</li>
<li>
<a href="/categories/%E5%B7%A5%E4%BD%9C%E7%AD%86%E8%A8%98">工作筆記 (68)</a>
</li>
<li>
<a href="/categories/%E5%85%B6%E4%BB%96">其他 (46)</a>
</li>
<li>
<a href="/categories/%E7%AD%86%E8%A8%98">筆記 (30)</a>
</li>
<li>
<a href="/categories/%E5%89%AA%E5%A0%B1">剪報 (18)</a>
</li>
<li>
<a href="/categories/starting">Starting (5)</a>
</li>
<li>
<a href="/categories/blog">Blog (4)</a>
</li>
</ul>
</div>
<div class="right">
<div class="external-profiles">
<strong>Social media</strong>
<a href="https://twitter.com/TheRealLednerb" target="_blank"><i class="fa fa-twitter-adblock-proof"></i></a>
<a href="https://github.com/Lednerb" target="_blank"><i class="fa fa-github"></i></a>
</div>
<div class="languages">
<strong>Other languages</strong>
<a href="/en" class="active">en</a>
<a href="/de">de</a>
</div>
</div>
</div>
</footer>
<div class="credits">
<div class="container">
<div class="copyright">
<a href="https://github.com/Lednerb" target="_blank">
&copy;
2017
by Lednerb
</a>
</div>
<div class="author">
<a href="https://github.com/Lednerb/bilberry-hugo-theme" target="_blank">Bilberry Hugo Theme</a>
</div>
</div>
</div>
<script type="text/javascript" src="https://h.cowbay.org/js/externalDependencies.39c47e10e241eae2947b3fe21809c572.js" integrity="md5-OcR&#43;EOJB6uKUez/iGAnFcg=="></script>
<script type="text/javascript" src="https://h.cowbay.org/js/theme.ff50ae6dc1bfc220b23bf69dbb41b54e.js" integrity="md5-/1CubcG/wiCyO/adu0G1Tg=="></script>
<script>
$(".moment").each(function() {
$(this).text(
moment( $(this).text() )
.locale( "en" )
.format('LL')
);
});
$(".footnote-return sup").html("");
</script>
<script>
var client = algoliasearch("Y2C4RWMPXW", "50ea7f8c41c0ad233926e0be2b769ed1");
var index = client.initIndex("default-content");
$('#search').autocomplete({ hint: false, autoselect: true, debug: false },
[
{
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, filters: 'language: en' }),
displayKey: function(suggestion) {
return suggestion.title || suggestion.author
},
templates: {
suggestion: function(suggestion) {
return "<span class='entry " + suggestion.type + "'>"
+ "<span class='title'>" + suggestion.title + "</span>"
+ "<span class='fa fa-fw " + suggestion.iconClass + "'></span>"
+ "</span>"
;
},
empty: function() {
return "<span class='empty'>Nothing found.</span>"
},
footer: function() {
return '<div class="branding">Powered by <img src="https:\/\/h.cowbay.org\/dist\/algolia-logo-light.svg" /></div>'
}
},
}
])
.on('autocomplete:selected', function(event, suggestion, dataset) {
window.location = (suggestion.url);
})
.keypress(function (event, suggestion) {
if (event.which == 13) {
window.location = (suggestion.url);
}
});
</script>
</body>
</html>