2011-07-14 9 views
2

私はアンドロイドでFacebookのアプリケーションを作成しようとしていて、アンドロイドfacebook-sdkを使用しています。私は理解しようとしている 例は、このいずれかになります。 https://github.com/facebook/facebook-android-sdk/tree/master/examples/streamandroid facebook application

uはそれは素晴らしいことだ少し私を助けることができれば、私はここで理解していない何かがあります。私は理解していないことは仕方このSession.restore(this)作品です

Dispatcher dispatcher = new Dispatcher(this); 
     dispatcher.addHandler("login", LoginHandler.class); 
     dispatcher.addHandler("stream", StreamHandler.class); 
     dispatcher.addHandler("logout", LogoutHandler.class); 


     Session session = Session.restore(this); 
     if (session != null) { 
      dispatcher.runHandler("stream"); 
     } else { 
      dispatcher.runHandler("login"); 
     } 
    } 

:メインActivityの中でいくつかの点で

のような何かをやっています。

restore方法は次のようになります。

public static Session restore(Context context) { 
     if (singleton != null) { 
      if (singleton.getFb().isSessionValid()) { 
       return singleton; 
      } else { 
       return null; 
      } 
     } 

     SharedPreferences prefs = 
      context.getSharedPreferences(KEY, Context.MODE_PRIVATE); 

     String appId = prefs.getString(APP_ID, null); 

     if (appId == null) { 
      return null; 
     } 

     Facebook fb = new Facebook(appId); 
     fb.setAccessToken(prefs.getString(TOKEN, null)); 
     fb.setAccessExpires(prefs.getLong(EXPIRES, 0)); 
     String uid = prefs.getString(UID, null); 
     String name = prefs.getString(NAME, null); 
     if (!fb.isSessionValid() || uid == null || name == null) { 
      return null; 
     } 

     Session session = new Session(fb, uid, name); 
     singleton = session; 
     return session; 
    } 

誰かがそこに保存されているものSharedPreferencesの全体の目的は、あるものを私に説明することができ、なぜ必要なこれらの2行ある場合:

fb.setAccessToken(prefs.getString(TOKEN, null)); 
      fb.setAccessExpires(prefs.getLong(EXPIRES, 0)); 

答えて

2

は、 facebookユーザー情報にアクセスする場合、または以下のようにアクセスするにはpermissionが必要なその他の操作にアクセスする場合。 Image from facebook, facebook Authentication dialog。ユーザープレスAllowボタンは、その後Tokenuser Idyour App Idvalidation time(無制限でもよい)だけでなく、Actionsあなたが行うことができる(e.g Access Info, Send Email, Access Posts, Post to Wall etc.)、その特定のTokenで自分のデータベースに挿入されている場合に返されますが、保存されそのTokenは、そのトークンに対して許可された情報および他のアクションにアクセスする。 アクションの要求を行うたびに、そのトークンと一致するものを検証し、そのアクションがユーザによって許可されているかどうかを確認します。

+0

私はallowを押すと、セッションを復元するために使用するTOKENをSharedPreferencesに保存しますか?また、UIDとNAMEは誰ですか? – adrian

+0

あなたがセッションが有効であることを保証するために 'restore()'メソッドが呼び出されるたびに、あなたがあなたのトークンを 'SharedPreferences'に保存します。 'UID'と' NAME'はユーザーのFacebookのIdとFacebookの名前です。 –