Android--Facebook Login without LoginButton

來源:互聯網
上載者:User

標籤:android   style   blog   io   ar   os   java   for   sp   

1.引入facebook 工程lib,在Manifest中聲明com.facebook.LoginActivity,facebook_app_id

<activity            android:name="com.facebook.LoginActivity"            android:label="@string/app_name"            android:theme="@android:style/Theme.Translucent.NoTitleBar" /><meta-data            android: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() { @Override public void onPreLogin() { showLoadingDlg(); } @Override public void onLoginSuccess(GraphUser user) { dismissLoadingDlg(); Toast.makeText(getApplicationContext(), user.getName()+"========", Toast.LENGTH_LONG).show(); } @Override public void onError() { dismissLoadingDlg(); } });

2).重寫onActivityResult方法

 @Override    public 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            @Override            public 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()        {            @Override            public 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();    }}

  

Android--Facebook Login without LoginButton

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.