QA@IT
«質問へ戻る

質問を投稿

Web アプリケーションの認証をfacebook4jで行う時、サインインとコールバック先でセッションIDが異なってしまう

AndroidアプリからWebアプリのAPIを呼んで、Facebookの機能を使うようなアプリを作ろうとしています。

Webアプリ側にはFacebook4jを組み込んで、認証を行っています。
以下のサイトを参考にサンプルソースを作成しました。
http://facebook4j.org/ja/code-examples.html
実装例がこちらです。
https://github.com/roundrop/facebook4j-oauth-example

このサンプルの中の「SignInServlet.java」に、以下のようなソースがあります。

Facebook facebook = new FacebookFactory().getInstance();
request.getSession().setAttribute("facebook", facebook);

このソースを呼び出した後、Facebook側で認証を行い、「CallbackServlet.java」を呼び出しました。
以下のようなソースがあります。

Facebook facebook = (Facebook) request.getSession().getAttribute("facebook");
String oauthCode = request.getParameter("code");

この、getAttribute("facebook")でnullが帰ってきてしまいます。
調べた所、セッションIDが異なっているのです。

クライアント端末は、Galaxy NexusのSC-04D。Androidバージョンは4.2.2です。
クライアント側のブラウザは、30.0.1599.82 です。
サーバ側のOSは、Windows7の64bitです。
webサーバはapache2.2、サーブレットコンテナはtomcat6.0、開発環境はEclipse Junoです。

クライアント端末をGalaxy SII のSC-02Cだとうまくいく(nullが帰らずにfacebookがかえってくる)のです。
その時のchromeは、18.0.1025469です。
Androidアプリの構造は、Activity内にこんな感じのソースを書いて呼びだそうとしています。

@Override
public void onClick(DialogInterface dialog, int which) {
    Uri uri = Uri.parse("apiのURL");
    Intent i = new Intent(Intent.ACTION_VIEW,uri);
    startActivity(i);
    finish();
}

これはブラウザに依存する問題なのでしょうか?対策が解らずに困っています。
よろしくお願いします。

AndroidアプリからWebアプリのAPIを呼んで、Facebookの機能を使うようなアプリを作ろうとしています。

Webアプリ側にはFacebook4jを組み込んで、認証を行っています。
以下のサイトを参考にサンプルソースを作成しました。
http://facebook4j.org/ja/code-examples.html
実装例がこちらです。
https://github.com/roundrop/facebook4j-oauth-example

このサンプルの中の「SignInServlet.java」に、以下のようなソースがあります。
```Java
Facebook facebook = new FacebookFactory().getInstance();
request.getSession().setAttribute("facebook", facebook);
```
このソースを呼び出した後、Facebook側で認証を行い、「CallbackServlet.java」を呼び出しました。
以下のようなソースがあります。
```Java
Facebook facebook = (Facebook) request.getSession().getAttribute("facebook");
String oauthCode = request.getParameter("code");
```
この、getAttribute("facebook")でnullが帰ってきてしまいます。
調べた所、セッションIDが異なっているのです。

クライアント端末は、Galaxy NexusのSC-04D。Androidバージョンは4.2.2です。
クライアント側のブラウザは、30.0.1599.82 です。
サーバ側のOSは、Windows7の64bitです。
webサーバはapache2.2、サーブレットコンテナはtomcat6.0、開発環境はEclipse Junoです。

クライアント端末をGalaxy SII のSC-02Cだとうまくいく(nullが帰らずにfacebookがかえってくる)のです。
その時のchromeは、18.0.1025469です。
Androidアプリの構造は、Activity内にこんな感じのソースを書いて呼びだそうとしています。
```Java
@Override
public void onClick(DialogInterface dialog, int which) {
	Uri uri = Uri.parse("apiのURL");
	Intent i = new Intent(Intent.ACTION_VIEW,uri);
	startActivity(i);
	finish();
}
```
これはブラウザに依存する問題なのでしょうか?対策が解らずに困っています。
よろしくお願いします。