共享整个Android的活动,全球的Facebook对象 [英] Sharing a global facebook object across Android activities

查看:116
本文介绍了共享整个Android的活动,全球的Facebook对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要创建一个全局的Facebook对象(从Android的Facebook的SDK),以便能够在我的活动分享:

I'm creating a global Facebook object (from android-facebook-sdk) to be able to share it across my activities:

public class GlobalVars extends Application {

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

}

在予添加LoginButton的活动之一,如实施例中所示:

In one of the activities I add the LoginButton, as shown in the examples:

public class FacebookActivity extends Activity {

    private LoginButton mLoginButton;

    private Facebook mFacebook;    
    private AsyncFacebookRunner mAsyncRunner;    

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        mFacebook = ((GlobalVars)getApplicationContext()).facebook;

        setContentView(R.layout.facebook);
        mLoginButton = (LoginButton) findViewById(R.id.login);
        mText = (TextView) FacebookActivity.this.findViewById(R.id.txt);

        mAsyncRunner = new AsyncFacebookRunner(mFacebook);

        SessionStore.restore(mFacebook, this);
        SessionEvents.addAuthListener(new SampleAuthListener());
        SessionEvents.addLogoutListener(new SampleLogoutListener());
        mLoginButton.init(this, mFacebook);

    }

    ...

}

现在,当我登录并使用同一个Facebook的对象到另一个活动:

Now, when I login and go to another activity using the same Facebook object:

public class MainActivity extends WhipemActivity {


    private Facebook mFacebook;    
    private AsyncFacebookRunner mAsyncRunner;   

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mFacebook = ((GlobalVars)getApplicationContext()).facebook;

    }

    ....

}

和运行的要求,如:

mAsyncRunner = new AsyncFacebookRunner(mFacebook);
mAsyncRunner.request("me/friends", new FriendRequestListener());

我收到了

Facebook Error: Error validating access token.

什么是错?它是有一个全球性的Facebook对象的正确方法?

What's wrong? Is it the correct way to have a global Facebook object?

感谢。

推荐答案

七月,在新的活动,你需要恢复登录时获得的访问令牌。

jul, in your new activity, you need to restore the access token obtained during login.

SessionStore.restore(mFacebook, this);

SessionStore节约和放大器;通过共享preferences恢复访问令牌/从共享preferences反对它创建。

SessionStore saves & restores the access token to/from SharedPreferences via a SharedPreferences object it creates.

SessionStore.restore()获取保存在共享preferences访问令牌,并将其设置Facebook的对象。

SessionStore.restore() gets the access token saved in SharedPreferences and sets it on the Facebook object.

您可以看一下在脸谱为例简单的项目,并期待在SessionStore类,以更好地看到SessionStore是如何工作的。

You can look in the "Facebook Example Simple" project and look at the SessionStore class to better see how SessionStore works.

<一个href="https://github.com/facebook/facebook-android-sdk/blob/master/examples/simple/src/com/facebook/android/SessionStore.java"相对=nofollow> Facebook的Andr​​oid的SDK /例子/简单

这篇关于共享整个Android的活动,全球的Facebook对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆