Android--Facebook Login without LoginButton
生活随笔
收集整理的這篇文章主要介紹了
Android--Facebook Login without LoginButton
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.引入facebook 工程lib,在Manifest中聲明com.facebook.LoginActivity,facebook_app_id
<activityandroid:name="com.facebook.LoginActivity"android:label="@string/app_name"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><meta-dataandroid:name="com.facebook.sdk.ApplicationId"android:value="@string/facebook_app_id" />2.調用方式:
1).初始化facebookLogin,設置回調
private FacebookLogin facebookLogin; facebookLogin = new FacebookLogin(this);facebookLogin.setLoginCallBack(new FacebookLogin.LoginCallBack(){@Overridepublic void onPreLogin(){showLoadingDlg();}@Overridepublic void onLoginSuccess(GraphUser user){dismissLoadingDlg();Toast.makeText(getApplicationContext(), user.getName()+"========", Toast.LENGTH_LONG).show();}@Overridepublic void onError(){dismissLoadingDlg();}});?
2).重寫onActivityResult方法
@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data){super.onActivityResult(requestCode, resultCode, data);facebookLogin.onActivityResult(requestCode, resultCode, data);}3).調用facebookLogin.login()方法,登錄成功后會調用onLoginSuccess方法返回用戶信息user
facebookLogin.login();3.工具類FacebookLogin.java代碼:
import android.app.Activity; import android.content.Context; import android.content.Intent; import com.facebook.Request; import com.facebook.Response; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.Request.GraphUserCallback; import com.facebook.model.GraphUser;public class FacebookLogin {private Activity activity;public FacebookLogin(Activity activity){this.activity = activity;}private LoginCallBack loginCallBack;public void onActivityResult(int requestCode, int resultCode, Intent data){onActivityResult(activity, requestCode, resultCode, data);}/*** Login*/public void login(){login(activity);}/*** onActivityResult* @param context* @param requestCode* @param resultCode* @param data*/private void onActivityResult(Context context, int requestCode, int resultCode, Intent data){if (context instanceof Activity){Session.getActiveSession().onActivityResult((Activity) context, requestCode, resultCode, data);}}/*** Login* @param context*/private void login(Context context){Session.openActiveSession((Activity) context, true, new Session.StatusCallback(){// callback when session changes state @Overridepublic void call(Session session, SessionState state, Exception exception){if (session.isOpened()){getUserInfo(session);}}});if (loginCallBack != null){loginCallBack.onPreLogin();}}private void getUserInfo(final Session session){Request request = Request.newMeRequest(session, new GraphUserCallback(){@Overridepublic void onCompleted(GraphUser user, Response response){try{if (loginCallBack != null){if (user != null){loginCallBack.onLoginSuccess(user);}else{loginCallBack.onError();}}}catch (Exception e){e.printStackTrace();loginCallBack.onError();}}});request.executeAsync();}/*** Logout from Facebook*/public void logout(){Session session = Session.getActiveSession();if (session != null){if (!session.isClosed()){session.closeAndClearTokenInformation();}}else{session = new Session(activity);Session.setActiveSession(session);session.closeAndClearTokenInformation();}}public void setLoginCallBack(LoginCallBack loginCallBack){this.loginCallBack = loginCallBack;}public interface LoginCallBack{void onPreLogin();void onLoginSuccess(GraphUser user);void onError();} }
轉載于:https://www.cnblogs.com/crane13/p/4079343.html
總結
以上是生活随笔為你收集整理的Android--Facebook Login without LoginButton的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Server 2008
- 下一篇: tablemodel dapter区别