你好,游客 登录 注册 搜索
背景:
阅读新闻

Android下使用最新FaceBook SDK 3.0

[日期:2013-02-06] 来源:CSDN  作者:h7870181 [字体: ]

前一篇我们学习了集成FacebookSDK到我们项目工程中,这篇来学习一下如何使用facebook来登录!

1、打开 res/layout/activity_main.xml,在布局中添加一个facebook登录按钮

<LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <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_marginBottom="30dp"
        android:layout_marginTop="30dp" />
</LinearLayout>

2、 创建MainFragment 类,并且继承Fragment 类,

重写onCreateView()方法

通过LoginButton设置权限 setReadPermissions()    更多权限访问 http://developers.facebook.com/docs/reference/login/#permissions

重写 onSessionStateChange()方法  ,作用:当session状态改变时调用该方法,state.isOpened() 为 true 时,则证明登录成功!

package com.thirdfacebook;

import java.util.Arrays;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.UiLifecycleHelper;
import com.facebook.widget.LoginButton;

public class MainFragment extends Fragment {
 private static final String TAG = "MainFragment";
 private UiLifecycleHelper uiHelper;

 private Session.StatusCallback callback = new Session.StatusCallback() {
  @Override
  public void call(Session session, SessionState state,
    Exception exception) {
   onSessionStateChange(session, state, exception);
  }
 };

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

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container,
   Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.activity_main, container, false);

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

 private void onSessionStateChange(Session session, SessionState state,
   Exception exception) {
  if (state.isOpened()) {
   Log.i(TAG, "Logged in...");
  } else if (state.isClosed()) {
   Log.i(TAG, "Logged out...");
  }
 }
 
 @Override
 public void onResume() {
  super.onResume();

  // For scenarios where the main activity is launched and user
  // session is not null, the session state change notification
  // may not be triggered. Trigger it if it's open/closed.
  Session session = Session.getActiveSession();
  if (session != null && (session.isOpened() || session.isClosed())) {
   onSessionStateChange(session, session.getState(), null);
  }

  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);
 }
}

linux
相关资讯       Android教程  FaceBook SDK 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款