如何在 android 应用程序上使用 facebook 对服务器上的用户进行身份验证

Posted

技术标签:

【中文标题】如何在 android 应用程序上使用 facebook 对服务器上的用户进行身份验证【英文标题】:How to authenticate users on server using facebook on android app 【发布时间】:2016-10-29 18:37:46 【问题描述】:

我正在构建一个适用于服务器的 android 应用。服务器需要完成所有工作。我想让我的用户创建帐户并使用 facebook 进行连接。

我不知道我需要在数据库中保留哪些关于用户的信息,以便在他更换手机、重新安装应用程序或任何会修改他的 Facebook 令牌的情况下对他进行身份验证。

我不知道我是否足够清楚我对 facebook auth 有点困惑:/

【问题讨论】:

如果用户更换设备应该没有问题。但是您可以保存 facebook api 提供的用户 ID。 【参考方案1】:

这是获取 facebook 用户 ID 的方法:

 @Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this);
    setContentView(R.layout.activity_main);


    callbackManager = CallbackManager.Factory.create();

    login = (LoginButton) findViewById(R.id.btn_login);
    login.setReadPermissions("email", "public_profile");
    login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() 
        @Override
        public void onSuccess(LoginResult loginResult) 
            GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() 
                @Override
                public void onCompleted(JSONObject object, GraphResponse response) 

                    String id = object.getString("id");
                    // some database stuff here
                    // ...
                
            );
            request.executeAsync();
        

        @Override
        public void onCancel() 

        

        @Override
        public void onError(FacebookException error) 
            Log.d("ERROR", error.toString());
            Toast.makeText(MainActivity.this, "Couldn't login, pleasy try again!", Toast.LENGTH_SHORT).show();
        
    );


【讨论】:

非常感谢,只是不知道 facebook 可以提供的 ID,也感谢代码 :) 你把它放在 onCreate() 中,这只有在我按下按钮时才有效? 按钮是由 Facebook-Api 提供的LoginButton

以上是关于如何在 android 应用程序上使用 facebook 对服务器上的用户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Facebook 中从 IOS 应用程序共享产品详细信息

如何使用 Oauth 请求提交和处理请求参数?

如何在 Android 上使用嵌入式 Flash?

Facebook Android SDK 4.0:newGraphPathRequest 返回“必须使用活动访问令牌来查询有关当前用户的信息。”

如何在android上使用socket.io和后台服务?

适用于 iOS 的 Facebook 开放图?