如何在社交身份验证中存储 facebook 的访问令牌

     2023-03-24     255

关键词:

【中文标题】如何在社交身份验证中存储 facebook 的访问令牌【英文标题】:how to store access token for facebook in social auth 【发布时间】:2015-04-16 22:42:46 【问题描述】:

我正在使用社交身份验证来集成 facebook、google 等社交应用程序。我成功授权并在 logcat 中打印了访问令牌,但我想存储它们以发送到 api。

class SignUp extends Activity

  SocialAuthAdapter adapter;
  public void onCreate(Bundle SavedBundleInstanceState )
   
   adapter = new SocialAuthAdapter(new ResponseListener());
   adapter.authroize(SignUp.this,Provider.Facebook);

  

通过这段代码,我在 logcat 中获取了访问令牌,但不知道如何存储它。

【问题讨论】:

您可以使用来自 android 的许多存储选项,例如 Shared Preferences、SQLite Databases 等 developer.android.com/guide/topics/data/data-storage.html @Mourice 你没有得到我的问题..实际上通过上面的代码我可以在 logcat 上打印访问令牌,但不知道如何让它们进入我的活动,所以我可以使用它们..i已使用社交身份验证进行集成 【参考方案1】:

您可以使用最简单的方法shared preferences .. 或使用session... 在其中您可以保存和检索stringkey value..

SessionManager.java

 public class SessionManager 
// Shared Preferences
SharedPreferences pref;

// Editor for Shared preferences
Editor editor;

// Context
Context _context;

// Shared pref mode
int PRIVATE_MODE = 0;

// Sharedpref file name
private static final String PREF_NAME = "wlm";

// All Shared Preferences Keys
private static final String IS_LOGIN = "IsLoggedIn";
private static final String STATUS = "status";
private static final String STATUS_COLOR = "status_color";



// User name (make variable public to access from outside)
public static final String KEY_NAME = "name";

// Email address (make variable public to access from outside)
public static final String KEY_EMAIL = "email";

// Constructor
public SessionManager(Context context)
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();

/**
 * Create login session
 * */
public void createLoginSession(String name, String email)
    // Storing login value as TRUE
    editor.putBoolean(IS_LOGIN, true);

    // Storing name in pref
    editor.putString(KEY_NAME, name);

    // Storing email in pref
    editor.putString(KEY_EMAIL, email);

    // commit changes
    editor.commit();
   

/**
 * Check login method wil check user login status
 * If false it will redirect user to login page
 * Else won't do anything
 * */
public void checkLogin()
    // Check login status
    if(!this.isLoggedIn())
        // user is not logged in redirect him to Login Activity
        //           Intent i = new Intent(_context, LoginScreen.class);
        //           // Closing all the Activities
        //           i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        //            
        //           // Add new Flag to start new Activity
        //           i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        //            
        //           // Staring Login Activity
        //           _context.startActivity(i);
    



/**
 * Get stored session data
 * */
public HashMap<String, String> getUserDetails()
    HashMap<String, String> user = new HashMap<String, String>();
    // user name
    user.put(KEY_NAME, pref.getString(KEY_NAME, null));

    // user email id
    user.put(KEY_EMAIL, pref.getString(KEY_EMAIL, null));

    // return user
    return user;


/**
 * Clear session details
 * */
public void logoutUser()
    // Clearing all data from Shared Preferences
    editor.clear();
    editor.commit();

    // After logout redirect user to Loing Activity
    //       Intent i = new Intent(_context, LoginScreen.class);
    //       // Closing all the Activities
    //       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //        
    //       // Add new Flag to start new Activity
    //       i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    //        
    //       // Staring Login Activity
    //       _context.startActivity(i);


/**
 * Quick check for login
 * **/
// Get Login State
public boolean isLoggedIn()
    return pref.getBoolean(IS_LOGIN, false);

在你的活动中,你可以存储你的字符串

session.editor.putInt("your key", YourString);

并使用检索

String str = session.pref.getString("your key", "");

还为 SessionManager 中的每个条目定义键,例如

 private static final String ANY_NAME= "your key";

【讨论】:

【参考方案2】:

访问令牌存储在 Session 类中

Session session = Session.getActiveSession();
String accessToken = session.getAccessToken();

【讨论】:

用于登录 Facebook 的 Python 社交身份验证无法在生产服务器上运行

】用于登录Facebook的Python社交身份验证无法在生产服务器上运行【英文标题】:PythonsocialauthforloginwithFacebooknotworkingonproductionserver【发布时间】:2016-06-2122:13:10【问题描述】:我正在使用Python社交身份验证通过Django1.8登录Facebook和G... 查看详情

如何使用 Firebase 登录多个社交服务?

...我希望用户能够使用多个不同的身份验证提供程序(例如Facebook、Twitter或Github)对我的Firebase应用程序进行身份验证。一旦通过身份验证,我希望用户无论使用哪种身份验证方法都可以访问同一个帐户。 查看详情

使用自己的 API 后端处理社交网络身份验证

...端通过OAuth处理某些社交网络的身份验证?我第一次使用facebook是直接用facebook认证客户端,获取accessToken将accessToken发送到我自己的后端并创建一个新用户,从ope 查看详情

facebook登录jwt(代码片段)

...emo中引用了这个项目。现在我需要在我的应用程序中登录facebook。对于社交登录,我找到了另一个网页https://ole.michelsen.dk/blog/social-signin-spa-jwt-server.html,它解释了如何进行社交登录。在正常登录中,我的JWT项目根据用户名,密码... 查看详情

使用带有 Passport Js 的 Facebook 进行身份验证:啥是访问令牌,注册后我应该存储啥?

】使用带有PassportJs的Facebook进行身份验证:啥是访问令牌,注册后我应该存储啥?【英文标题】:AuthenticationusingFacebookwithPassportjs:whatisaccessTokenfor,whatshouldIstoreafterregistration?使用带有PassportJs的Facebook进行身份验证:什么是访问令... 查看详情

如何在颤动中使用facebook执行firebase身份验证[重复]

】如何在颤动中使用facebook执行firebase身份验证[重复]【英文标题】:HowcanIperformfirebaseauthenticationwithfacebookinflutter[duplicate]【发布时间】:2019-09-2418:12:42【问题描述】:我正在尝试在我的应用中添加firebase和facebook身份验证。Facebook... 查看详情

使用 Facebook 的访问令牌在 UIWebView 中显示带有经过身份验证的用户会话的粉丝页面

】使用Facebook的访问令牌在UIWebView中显示带有经过身份验证的用户会话的粉丝页面【英文标题】:DisplayingafanpageinaUIWebViewwithanauthenticatedusersessionusingFacebook\'saccesstoken【发布时间】:2013-03-0909:01:12【问题描述】:我们正在开发一款... 查看详情

Facebook 身份验证教程缺失的部分

】Facebook身份验证教程缺失的部分【英文标题】:Facebookauthenticationtutorialmissingpiece【发布时间】:2012-01-2023:44:54【问题描述】:在过去的2天里,我一直在努力尝试成功验证用户进入我的Facebook应用程序。我最终要实现的是检索和... 查看详情

用户登录后如何使用社交 API(如 facebook)将数据存储在数据库中

】用户登录后如何使用社交API(如facebook)将数据存储在数据库中【英文标题】:HowtostoredataondatabaseafteruserloginusingsocialAPI,likefacebook【发布时间】:2022-01-2200:21:00【问题描述】:我正在开发一个使用django作为后端的react-native应用... 查看详情

使用社交身份验证详细信息从内置登录系统登录

...述】:我有内置的laravel和社会认证。假设如果用户使用facebook登录,我将用户详细信息(例如fb_id、username、email等)存储到用户表中,该表可通过内置登录系统进行验证。这样我可以 查看详情

如何在 UIWebView 中访问公共 Facebook 个人资料

】如何在UIWebView中访问公共Facebook个人资料【英文标题】:HowwillAccessapublicFacebookprofileinUIWebView【发布时间】:2015-05-1911:44:19【问题描述】:如何以已通过身份验证的用户身份加载FacebookURL(例如FacebookMobile)?使用FacebookSDK并已使... 查看详情

Firebase 身份验证中的用户 ID 如何在所有身份验证提供程序(Google、Facebook、Github)中都相同?

...份验证中的用户ID如何在所有身份验证提供程序(Google、Facebook、Github)中都相同?【英文标题】:HowcantheUserIDinFirebaseAuthenticationbethesameacrossallAuthenticationProviders(Google,Facebook,Github)?【发布时间】:2018-01-2405:51:16【问题描述】:Googl... 查看详情

如何在 Facebook Flash 应用程序中进行身份验证?

】如何在FacebookFlash应用程序中进行身份验证?【英文标题】:HowtoauthenticateinaFacebookFlashapplication?【发布时间】:2010-09-1204:01:01【问题描述】:我不明白如何在FacebookFlash应用程序中对用户进行身份验证。我从文档中读到Facebook平... 查看详情

如何在 Angular 应用程序中存储身份验证令牌

】如何在Angular应用程序中存储身份验证令牌【英文标题】:HowtostoreanauthtokeninanAngularapp【发布时间】:2014-07-0912:26:29【问题描述】:我有一个与RESTAPI服务器通信的Angular应用程序(SPA),我有兴趣找出存储从API服务器返回的访问令... 查看详情

在 XMPPFramework 中设置 Facebook SASL 身份验证

】在XMPPFramework中设置FacebookSASL身份验证【英文标题】:SettingupFacebookSASLauthenticationinXMPPFramework【发布时间】:2011-01-1908:14:53【问题描述】:关于如何在XMPPFrameworkforiPhone中设置facebookSASL身份验证的任何线索。我不需要获取访问令... 查看详情

在 Java Web 应用程序中添加用户身份验证

...6-1313:39:26【问题描述】:我需要对使用不同社交媒体(如facebook、twitter、google和yahoo)访问我的基于java的Web应用程序(Servlet和JSP)的用户进行身份验证。有没有解决这个问题的开源库?与其使用不同的API,不如使用开源Java库。... 查看详情

如何使用颤振在 django 中进行 google、facebook 身份验证

】如何使用颤振在django中进行google、facebook身份验证【英文标题】:Howtomakegoogle,facebookauthenticationindjangowithflutter【发布时间】:2021-02-0418:16:41【问题描述】:我将Flutter用于移动应用,将django用于后端API。我希望用户能够使用来自... 查看详情

如何在对话框而不是 Safari 网页中进行 Facebook 身份验证

】如何在对话框而不是Safari网页中进行Facebook身份验证【英文标题】:HowtodotheFacebookauthenticationinadialoginsteadofSafariwebpage【发布时间】:2011-07-2602:26:37【问题描述】:当使用Facebook连接的iPhone应用程序时,我遵循SSO指南(http://developer... 查看详情