{会话状态:打开,令牌:{AccessToken令牌:ACCESS_TOKEN_REMOVED权限:[]},appId:1xxxxxxxxxxx}

时间:2014-02-18 10:54:21

标签: android facebook session facebook-graph-api

我想在我的应用程序中实现Facebook登录,但是这里我在尝试登录时遇到问题,即:

**{Session state:OPENING, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:1xxxxxxxxxxxxxxx}**

有时这个也是:

  **{Session state:CLOSED, token:{AccessToken token:ACCESS_TOKEN_REMOVED permissions:[]}, appId:1xxxxxxxxxxxxxxx}**

注意:当我的设备已经安装了NATIVE FACEBOOK APP时会出现上述问题,如果我卸载Facebook应用程序它的工作原理绝对正常。任何人都可以帮我解决问题吗?

提前致谢

6 个答案:

答案 0 :(得分:12)

请务必在Activity中覆盖onActivityResult方法:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);

}

答案 1 :(得分:4)

尝试

select p.name, p.price, op.order_id, op.product_id, Totals.theSum from products p inner join orders_products op on op.product_id = p.id inner join (select sum(p.price) as theSum, op.order_id from products p inner join orders_products op on op.product_id = p.id where op.order_id in (1, 2) group by op.order_id) AS Totals on Totals.order_id = op.order_id;

而不是使用toString()函数。

答案 2 :(得分:2)

我知道这是一张旧票,但似乎没有人给出正确答案。该令牌将从toString中删除,以防止令牌暴露。

com.facebook.LoggingBehavior(来自第29行):

/**
 * Indicates that access tokens should be logged as part of the request logging; normally they are not.
 */
INCLUDE_ACCESS_TOKENS,

com.facebook.AccessToken(来自第322行):

private String tokenToString() {
    if (this.token == null) {
        return "null";
    } else if (Settings.isLoggingBehaviorEnabled(LoggingBehavior.INCLUDE_ACCESS_TOKENS)) {
        return this.token;
    } else {
        return "ACCESS_TOKEN_REMOVED";
    }
}

要在toString请求中显示令牌,只需将日志记录添加到设置中:

    Settings.addLoggingBehavior( LoggingBehavior.INCLUDE_ACCESS_TOKENS );
    this.mUiLifecycleHelper = new UiLifecycleHelper( this, this.mCallback );
    this.mUiLifecycleHelper.onCreate( savedInstanceState );

希望这可以帮助其他人解决同样的问题。

答案 3 :(得分:2)

只是抬头。 这个确切的案例发生在我身上。我的登录停止工作只是因为我在Manifest.xml文件中更改了Activity启动模式:

机器人:launchMode =" singleInstance"

机器人:launchMode =" singleTask"

所以,我再次将其更改为singleInstance,现在工作正常。

答案 4 :(得分:0)

这种情况可能会发生,因为您没有在Facebook应用中添加hashkey。请查看此链接Generating Hashkey for Android,了解如何生成hashkey

这也发生在我身上。我在Facebook应用程序中添加hashkey后开始工作。

答案 5 :(得分:0)

这是我对新的Facebook SDK 4.1的工作集成。  首先,您需要初始化SDKin 4.1 ///

/** if face book SDK is not initialized then initialized.*/ 
    if(!FacebookSdk.isInitialized())
           FacebookSdk.sdkInitialize(BaseActivity.this);    

现在你需要回调管理器

/** create face book callback factory.*/ 
    if(null == callbackManager)
    callbackManager = CallbackManager.Factory.create();

这些是回电。

    public final  FacebookCallback<LoginResult> _mcallbackLogin =    new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {

            if(loginResult.getAccessToken() != null){
                Log.i("TAG", "LoginButton FacebookCallback onSuccess token : "+ loginResult.getAccessToken().getToken());
              GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphJSONObjectCallback() {
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response) {
                        if(null != object){
                            Log.e("TAG", object.optString("name"),object.optString("first_name"),object.optString("email"),false).execute();
                        }
                    }
                }).executeAsync();
            }
        }

        @Override
        public void onCancel() {
            Log.e("TAG", "LoginButton FacebookCallback onCancel");
        }

        @Override
        public void onError(FacebookException exception) {
            Log.e("TAG","Exception:: "+exception.getStackTrace());
        }
    };

现在您需要在Facebook登录按钮上注册回电

    loginBtn.registerCallback(BaseActivity.callbackManager,_mcallbackLogin);