自社で作成したGaroonAPIを使用したWebページでログインし、そのWebページからGaroonのページにアクセスしたとき、ログイン画面を省略することはできるのでしょうか?
現在、必ずログイン画面が出てしまい、自社作成のオリジナルページでログイン後、再度Garoonでログインが必要になります。
そのため、ブラウザを閉じるたびに同じようなログイン処理が必要になり手間になっています。
回避する方法があれば、教えて頂けないでしょうか?
よろしくお願いいたします。
自社で作成したGaroonAPIを使用したWebページでログインし、そのWebページからGaroonのページにアクセスしたとき、ログイン画面を省略することはできるのでしょうか?
現在、必ずログイン画面が出てしまい、自社作成のオリジナルページでログイン後、再度Garoonでログインが必要になります。
そのため、ブラウザを閉じるたびに同じようなログイン処理が必要になり手間になっています。
回避する方法があれば、教えて頂けないでしょうか?
よろしくお願いいたします。
オリジナルページとクラウド版Garoonはクロスオリジンになるので、
SSOは少し難しいと思います。
オリジナルページからGaroonのページにアクセスすることは多いでしょうか?
もしそうであれば、逆にGaroon内のHTMLポートレットで
オリジナルの内容を表示するという代案はいかがでしょうか?
HTMLポートレットにはJavascriptが配置できますので、
ここからGaroonAPIも実行することができます。
また、Garoonにログインした時点で認証が完了しているので、
Cookieを使った認証が簡単に行えて便利です。
ただ、いままで作ってこられたオリジナルページ用のプログラムが
使えなってしまいますが。。
Kawamukai Naoki様、
ご回答ありがとうございます。
HTMLポートレットについて教えて頂きたいのですが、ポートレットで内容を表示させるためには、iframeタグを使用してオリジナルの内容を表示させる感じでしょうか?
それとも、他の方法があるのでしょうか?
よろしくお願いいたします。
Saito 様
こちらではiframeではなく、
javascriptでの利用をイメージしていました。
ScheduleGetEvents を使用したサンプルを
作ってみましたのでご参照ください。
<!-- GaroonAPIのPOSTデータのテンプレート -->
<textarea id="my_api_post_data" style="display:none">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>
<Action xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing">ScheduleGetEvents</Action>
<Timestamp xmlns="http://schemas.xmlsoap.org/ws/2002/07/utility">
<Created>2037-08-12T14:45:00Z</Created>
<Expires>2037-08-12T14:45:00Z</Expires>
</Timestamp>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ScheduleGetEvents>
<parameters start="%start%" end="%end%"></parameters>
</ScheduleGetEvents>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</textarea>
<!-- 実行結果を格納するための要素 -->
<ul id="my_api_result"></ul>
<script type="text/javascript">
(function(){
'use strict';
// データを取得する基準日を指定 ※適時変更してください
var start = '2015-05-20';
// APIのURL
var url = '/g/cbpapi/schedule/api.csp';
// POSTするデータを生成
// ※現在のGaroonにはjQueryが組み込まれているのでそれをそのまま利用しています
var my_api_post_data = jQuery('#my_api_post_data').val()
.replace('%start%', start + 'T00:00:00')
.replace('%end%', start + 'T23:59:59');
// APIの実行結果を格納する準備
var result = jQuery('#my_api_result');
var title = jQuery('<li style="font-weight:bold">' + start + 'の予定</li>');
result.append(title);
// Ajaxの開始
jQuery.ajax({
url: url,
method: 'POST',
dataType: 'xml',
data: my_api_post_data,
success: function(response){
jQuery(response).find('schedule_event').each(function(){
var event = jQuery(this);
var a = jQuery('<a>');
// 予定のタイトルを取得
a.text(event.attr('detail'));
// 予定のIDから、予定へのリンクを生成
a.attr('href', '/g/schedule/view.csp?event=' + event.attr('id'));
// 実行結果を格納
var li = jQuery('<li>').append(a);
result.append(li);
});
},
error: function(response){
alert('error');
}
});
})();
</script>
Kawamukai Naoki様、
丁寧な解説ありがとうございます!
このような使い方ができるのは知りませんでした…。
現状Javascriptの知識が少ない為、参考にさせていただきます。
ありがとうございました!
Kawamukai Naoki様、
ずいぶん日が経過したのですが、以前教えていただいたJavascriptを使用する方法で、ログイン中のCookieの取得はできますでしょうか?
よろしくお願いいたします。
Saito 様
セッションCookieにはHttpOnly属性が付与されています。
このため、
ブラウザがガルーンにリクエストを行うときには送信されていますが、
javascriptからその値を参照することはできません。
ブラウザのセッションCookieを使った認証でGaroonAPIを実行する場合、
javascriptを使ってGaroonAPIを実行する必要があります。
Kawamukai Naoki様、
ご返答ありがとうございます。
やはり、javascriptからは参照できないのですね。
javascriptを使ってGaroonAPIを実行することにします。
ありがとうございました。