【问题标题】:Android : Sharing facebook session object among various activitiesAndroid:在各种活动之间共享 facebook 会话对象
【发布时间】:2012-07-08 08:07:48
【问题描述】:

我需要在我的 android 应用中实现 facebook 的分享功能。我的场景是我必须能够在所有其他活动中使用在启动屏幕中创建的 facebook 对象。我已经检查了 SO 中的相关问题并找到了下面提到的链接。现在我在猜测,其中哪一种是理想的实现方式。请让我知道您对这些方法的看法,或者如果您有自己的方法,请告诉我。

Sharing a global facebook object across Android activities

Facebook android: passing facebook object between activities

Android: Passing a Facebook session across activities

Facebook wall post from multiple Activities 在上面提到的答案中

第一个解决方案处理在应用程序上下文中创建 facebook 对象并在应用程序之间共享:

public class GlobalVars extends Application {

public static final String APP_ID = "123456789";    
public Facebook facebook = new Facebook(APP_ID);

}

Second Solution 说明了共享首选项的使用。创建有效的 facebook 会话后,它会存储在 sharedpreferences 中,并在需要时恢复到每个活动中。

SharedPreferences prefs = getApplicationContext().getSharedPreferences("facebook",MODE_PRIVATE);
String access_token = prefs.getString("access_token", null);
long expires = prefs.getLong("access_expires", 0);
if(access_token != null) {
facebook.setAccessToken(access_token);
}
if(expires != 0) {
facebook.setAccessExpires(expires);
}

第三种解决方案说明了使用 parcelable 实现。

public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);

}

第四个解决方案尝试创建一个包含静态 Facebook 对象的类,并尝试在所有活动中使用相同的对象。

Class Utiltiy {
public static Facebook mFacebook;

public static void initialize() {
   mFacebook = new Facebook(app_id);
}
}

Utility.mFacebook.request(....).

感谢您浏览整个帖子。请提出合适的方法。

【问题讨论】:

    标签: android facebook session android-activity sharedpreferences


    【解决方案1】:

    还有另一种方法可以将 Facebook 凭据存储在 Android Account Manager 中。 如果用户安装了 facebook 应用程序并且已经登录,您可以从客户经理那里获得他的凭据。这种方法为用户提供了一个中心点(设置 -> 帐户)来定义其凭据。从那里您可以自定义它们甚至删除它们。

    【讨论】:

    • 感谢您的快速回复。感谢您花时间建议一种获取凭据的新方法。但我想它很复杂。我在我的应用程序中使用 facebook sdk,以便它可以为我们处理获取令牌。
    猜你喜欢
    • 2012-10-07
    • 1970-01-01
    • 2018-02-25
    • 2012-07-29
    • 2014-04-13
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多