在我集成facebook登录的应用程序中,facebook登录工作正常,但它要求登录每一次。
我通过facebook登录工作正常,在我的应用程序中使用应用程序请求,同时应用程序请求也要求facebook登录。
我想避免这种情况,告诉我一些想法,
我的登录代码:
Session.openActiveSession(Notication_Webview.this, true, new Session.StatusCallback() {
@Override
public void call(final Session session, SessionState state, Exception exception) {
// TODO Auto-generated method stub
if(session.isOpened()){
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
// TODO Auto-generated method stub
if(user!=null){
try{
userName=user.getFirstName();//obj.getString("first_name");
facebookId=user.getId();//obj.getString("id");
}catch (Exception e) {
Log.e(tag, "getUserIdMethod--->"+e);
}
}
}
});
}
}
});在应用程序请求代码中,
Session session = Session.getActiveSession();
Facebook mFb = new Facebook("app id");
Bundle params = new Bundle();
params.putString("to", userIDString);
params.putString("message", Message);
mFb.dialog(this.getParent(), "apprequests",
params, new DialogListener() {
public void onComplete(Bundle values) {
// TODO Auto-generated method stub
}
public void onFacebookError(FacebookError e) {
// TODO Auto-generated method stub
}
public void onError(DialogError e) {
// TODO Auto-generated method stub
}
public void onCancel() {
// TODO Auto-generated method stub
}
});mFb.dialod方法:
@Deprecated
public void dialog(Context context, String action, Bundle parameters, final DialogListener listener) {
parameters.putString("display", "touch");
parameters.putString("redirect_uri", REDIRECT_URI);
if (action.equals(LOGIN)) {
parameters.putString("type", "user_agent");
parameters.putString("client_id", mAppId);
} else {
parameters.putString("app_id", mAppId);
// We do not want to add an access token when displaying the auth dialog.
if (isSessionValid()) {
parameters.putString(TOKEN, getAccessToken());
}
}
if (context.checkCallingOrSelfPermission(Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
Util.showAlert(context, "Error", "Application requires permission to access the Internet");
} else {
new FbDialog(context, action, parameters, listener).show();
}
}告诉我如何避免第二次登录。
发布于 2013-02-18 18:28:32
用户登录后,获取访问令牌并使用SharedPreferences将其保存在您的设备中。
下次用户打开你的应用程序时,打开你的SharedPreference文件,并从那里获取访问令牌的值。
从存储中检索值后,检查会话是否仍然有效或未使用isSessionValid().
如果会话仍然有效,则直接登录用户(无需再次询问详细信息),并确保在用户登录时更新了SharedPreferences中的访问令牌的值。这样,每次用户登录时,访问令牌的过期时间都会延长。
此外,不要忘记在用户注销时对SharedPreference文件执行clear()操作。
发布于 2013-02-18 17:48:39
当您登录时,会话将打开,此时获取一个静态标志,并在检查该标志后对isSession()执行update.Keep go。当您再次注销时,请重新设置静态标志。
发布于 2013-02-18 17:43:41
当用户登录时,将用户名和密码存储在某个地方。您可以使用SQLite来实现这一点。如果hw注销,请销毁它。当用户再次打开应用程序时,检查数据库中是否有数据。如果是,则直接将其传递给facebook,否则要求用户重新登录。
https://stackoverflow.com/questions/14933215
复制相似问题