0

我遵循了本教程,该教程无需教程中描述的长代码即可启用 facebook 登录(如果我理解正确的话)。问题是根据教程,它使用 Facebook 的 LoginButton:

LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);

这是

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

我想使用我自己的对象。在我的例子中,我有一个用户可以点击的 LinearLayout。我怎样才能做到这一点?

4

2 回答 2

1

实际上,页面底部有一个教程。这是操作栏的菜单项,但也可以是普通按钮:

menu_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Session session = Session.getActiveSession();


                if (session != null && session.isOpened())  {
                     session.closeAndClearTokenInformation();
                     Toast.makeText(getApplicationContext(), "Logged out", Toast.LENGTH_SHORT).show();
                } else {
                    Session.openActiveSession(ViewPagerActivity.this, true, new StatusCallback() {
                          @Override
                          public void call(Session session, SessionState state, Exception exception) {
                            if (session.isOpened()) {

                              // make request to the /me API
                              Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                                // callback after Graph API response with user object

                                @Override
                                public void onCompleted(GraphUser user, Response response) {
                                    if (user != null) {
                                        Toast.makeText(getApplicationContext(), "Logged in", Toast.LENGTH_SHORT).show();
                                    }

                                }
                              });
                            }
                          }
                        });
                }

            }
        });
于 2013-09-11T22:05:53.937 回答
1

这是登录 Facebook 并添加发布到您的墙上的权限的示例代码。

Session currentSession = Session.getActiveSession();
if (currentSession == null
        || currentSession.getState().isClosed()) {
    Session session = new Session.Builder(this).build();
    Session.setActiveSession(session);
    currentSession = session;
}

if (currentSession.isOpened()) {

} else if (!currentSession.isOpened()) {
    OpenRequest op = new Session.OpenRequest(this);

    op.setCallback(statusCallback);

    List<String> permissions = new ArrayList<String>();
    permissions.add("publish_stream");
    op.setPermissions(permissions);

    Session session = new Builder(this).build();
    Session.setActiveSession(session);
    session.openForPublish(op);
}

Facebook 使用 aSession来验证用户并管理会话,因此得名。有一个与 Facebook SDK 捆绑在一起的非常详细的示例,称为 SessionLoginSample,您可以查看一下。

于 2013-08-09T21:35:12.737 回答