如何将Facebook SDK集成到原生Android应用程序中

时间:2014-07-11 18:04:51

标签: android facebook facebook-graph-api

Facebook有{em>非常好的文档为Android, iOS & JavaScript等集成SDK。但我仍然看到有关集成Facebook SDK的确切方法的一些混淆或误解。

所以我正在编写所有指向步骤,以将Facebook SDK集成到Android Native应用程序中,并使用Graph API等。

在文档中,他们以文档的方式对其进行了解释。

在这里,我试图解释在我们的应用程序中集成时我们需要它们的步骤。

我将回答我们得到的最多疑问,大多数错误等等。

我希望有一天能帮到某人。

1 个答案:

答案 0 :(得分:1)

Facebook提供了广泛的选项,可以通过集成其SDK来完成。但是我们需要遵循一些适当的步骤。

  • 登录

我们需要做的第一件事是Login,在我们的应用开始使用Facebook SDK之前,我们需要做authentication。在我们的应用程序开始从

中获益之前,用户必须使用他/她的帐户登录

这可以通过两种方式完成,

a)通过原生Android应用

如果用户在手机中安装了Facebook应用,那么他们将被要求通过他们在Facebook应用中登录的帐户进行登录。

b)通过网络视图

如果用户没有Facebook应用程序,则会在网络浏览器中打开Facebook登录页面,用户可以登录他们的帐户。

因此,通过这两个选项中的任何一个,一旦用户登录,您的应用就会经过身份验证以在您的应用中使用他们的帐户。

如何操作

Once you include Facebook SDK & Library project in your own Android app然后您只需将其内置窗口小部件放入任何xml文件中,您就会看到“登录”按钮。它的代码很简单,

<com.facebook.widget.LoginButton
        android:id="@+id/authButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="30dp"
        />

只需在XML文件中包含上述代码(您希望在哪里显示Facebook登录按钮。)它将自动创建如下所示的“登录”按钮,

enter image description here

在此阶段我们的想法/怀疑/疑问

Q值。如何在我自己的应用程序中创建这样的按钮?我将从哪里获得徽标或它有什么颜色等等。

答。我们不需要自己创建它,我们只需将该小部件放在我们的代码中,按钮就会自动创建。

  • 授权

好的,很好,我们已经包含了Facebook登录按钮,现在用户可以登录我们的应用程序,接下来是什么?

下一页Facebook提供了许多我们可以做的选项,例如在他们的个人资料上分享内容,发布状态或自定义故事,获取用户喜欢的页面,访问他们的消息,帖子,提要,朋友列表等等等等等等等等等等

但是用户使用他们的帐户登录不喜欢,我们可以使用他们的Facebook帐户在我们的应用中执行任何操作。

下一个采取行动的术语是Permissions

要执行特定任务,我们需要相关许可,如果用户授予您使用Facebook帐户的权限,则只有我们的应用才能执行此操作。

例如,要访问用户,我们需要user_likes权限,代表用户在其个人资料上发布内容我们需要publish_actions权限等Complete list of permissions can be found here

因此,在身份验证之后,接下来就是授权。我们的应用授权用户的帐户。

如何获得权限

由于我们已经使用他们的按钮小部件为facebook创建了一个Login按钮,现在我们可以将权限作为列表提供给该按钮,因此当用户登录时,它将让用户知道他们想要的权限。帐户。

清除疑点

是的,用户将在登录时被告知您的应用对他们有什么权限。您可以说,用户将被告知您的应用可以使用他们的Facebook帐户做什么,例如访问他们的朋友列表,在他们的个人资料上发布内容,阅读联系人等。但是用户可能会或可能不会阅读它,但登录按钮让他们知道一切。

如何向Facebook登录按钮添加权限

LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("user_likes", "user_status", "publish_actions"));

所以你可以看到我们提供了我们想要的权限列表。但是,甚至可以在以后要求更多权限,因此建议在用户需要时首先请求基本权限并询问诸如publish_actions之类的权限。

  • 会话

会话是一个非常常见的术语,主要用于Web应用程序。它在这里起到类似的作用。一旦用户使用他们的Facebook帐户登录,就会在您的应用程序中使用Facebook创建Session,并且该用户将一直保留到用户退出。

问。如何显示Facebook注销按钮?

答。您将非常高兴听到这一点,您不需要做任何事情来显示注销按钮,一旦用户登录,登录按钮就会自动更改为注销按钮。

会话的好处

会话对象具有authentication token,使我们能够使用Facebook SDK执行任何操作。

我们可以通过调用以下方法随时获取facebook会话对象,

Session session = Session.getActiveSession();

  • UiLifecycleHelper类

虽然我们已经完成了所有步骤,但是我们需要正确地维护会话,那么我们将需要这个类。我们只需要将它放在我们所有的活动生命周期方法中 以便相应地维护facebook会话。

在您的活动中定义一个实例变量,

private UiLifecycleHelper uiHelper;

然后添加以下代码

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    uiHelper = new UiLifecycleHelper(getActivity(), callback);
    uiHelper.onCreate(savedInstanceState);
}

@Override
public void onResume() {
    super.onResume();
    uiHelper.onResume();
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    uiHelper.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onPause() {
    super.onPause();
    uiHelper.onPause();
}

@Override
public void onDestroy() {
    super.onDestroy();
    uiHelper.onDestroy();
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    uiHelper.onSaveInstanceState(outState);
}

现在,facebook会话将自动维护而不会让您头疼。

  • 调用图谱API

我将在这里为您提供一个非常简单和基本的示例,假设我们想要获取用户喜欢的页面列表,然后我们可以使用以下代码执行此操作,

Session session = Session.getActiveSession();
new Request(
    session,
    "/me/likes",
    null,
    HttpMethod.GET,
    new Request.Callback() {
        public void onCompleted(Response response) {

                 //Do what you want to with the response

        }
    }
).executeAsync();

问。如何获取与当前用户相关的数据?我们还没有提到任何用户ID?

答。这个问题的答案是我们在这里使用me对象,它将自动指向使用Facebook帐户登录的当前用户。