我想在我的应用程序中实现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应用程序它的工作原理绝对正常。任何人都可以帮我解决问题吗?
提前致谢
答案 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);