zoukankan      html  css  js  c++  java
  • Android 集成FaceBook实现第三方登陆

      一,必要准备:

        

      上面是官方英文文档,下面详细解释一下:

        Facebook app : 即需要在Facebook Developer平台,创建自己的App,

        Facebook SDk:  添加Facebook SDK到自己的项目中,

        Facebook App ID:  需要得到在Facebook Developer平台创建的App 的ID.

        Android Key Hash:  得到Android Hash Key.

        Facebook Activity:  将FaceBook Activity包含在你的项目AndroidManifest.xml文件中.

      集成Facebook 第三方登陆,需要以上五个必要条件,下面详细说明,如何获得五个条件。

      一:Facebook App

        进入Facebook Developer官方网站:https://developers.facebook.com/  (需要科学上网)

        

      点击右上角My Apps —— Add a new App,

      选择Android,

      

      输入创建App的name

      

      类别随意选择,点击右下角,“创建应用编号”

      创建成功后,会跳转到一个页面,页面最顶部,有显示六个步骤,根据页面提示,慢慢往下,一步步跟着步骤做就可以了。

      在"Key Hashes"步骤里,在自己电脑的命令行里,输入响应的命令,会得到一串字符,这个就是Key Hashe了。

      比如在linux 系统命令行里,输入:keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64,接着输入密码:android。

      至此,Facebook App就创建成功了!

      二:Facebook SDK(使用Android Studio)

        1.添加以下代码至 build.grale (Module:app)

        

    repositories {
        mavenCentral()
    }

        2.将Facebook SDK添加到项目:

          仍然是 build.grale(Module:app)文件,在dependencies中,添加下面这一行代码:

    "compile 'com.facebook.android:facebook-android-sdk:4.+'

      

      三:Facebook App ID

        ID在Facebook Developer官网,点击“My Apps,然后选择响应的App,就可以看到App ID了。

        将ID添加到项目string.xml文件中,如下:

      

    <string name="facebook_app_id">1142428895392515</string>

      然后在AndroidMainifest.xml文件中配置    

    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

      四:Android Key Hash

        上面创建应用的时候,已经得到过了。

      五:Facebook Activity

        在项目配置文件中,将Facebook Activity包含进去。(我忘了加,结果报:找不到Facebook Activity错误)

     

      六:样例代码

        MainActivity.java

    package mera.login;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    
    import com.facebook.AccessToken;
    import com.facebook.CallbackManager;
    import com.facebook.FacebookCallback;
    import com.facebook.FacebookException;
    import com.facebook.FacebookSdk;
    import com.facebook.appevents.AppEventsLogger;
    import com.facebook.login.LoginResult;
    import com.facebook.login.widget.LoginButton;
    
    public class MainActivity extends Activity {
        //    @ViewInject(id = R.id.facebook)
        private LoginButton bt_facebook;
        private CallbackManager mCallbackManager;
        private AccessToken mAccessToken;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            //第一行,初始化FacebookSdk,
            FacebookSdk.sdkInitialize(getApplicationContext());
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            mCallbackManager = CallbackManager.Factory.create();
            //找到login, button
            bt_facebook = (LoginButton) findViewById(R.id.facebook);
            bt_facebook.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    Log.e("abc", "onSuccess");
                }
    
                @Override
                public void onCancel() {
                    Log.e("abc", "onCancel");
                }
    
                @Override
                public void onError(FacebookException error) {
                    Log.e("abc", "onError");
                }
            });
        }
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            mCallbackManager.onActivityResult(requestCode,
                    resultCode, data);
        }
    
        public void getFaceBookToken(View view) {
            AccessToken mAccessToken = AccessToken.getCurrentAccessToken();
            Log.e("token", "token :" + mAccessToken.getToken() + "," + "user_id" + mAccessToken.getUserId());
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            AppEventsLogger.activateApp(this);
        }
    
        @Override
        protected void onPause() {
            super.onPause();
            AppEventsLogger.deactivateApp(this);
        }
    }

      activity_main.layout

    <?xml version="1.0" encoding="utf-8"?>
    <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"
        android:padding="10dp"
        android:background="#c99e9e"
        tools:context="mera.login.MainActivity">
    
    
        <com.facebook.login.widget.LoginButton
        android:id="@+id/facebook"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=""
        />
    </LinearLayout>

      有问题下方评论留言给我。  

      

  • 相关阅读:
    测试sql 查询时间
    C# 数组 ArrayList Array 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList
    DotNet软件开发框架
    C# Socket多线程编程实例
    Yahoo!网站性能最佳体验的34条黄金守则
    最基本的Socket编程(C#)
    完全解决VS2008通过Internet连接VSS2005
    追MM与设计模式的有趣见解
    一个GridView的PagerTemplate
    线程
  • 原文地址:https://www.cnblogs.com/lomomiao/p/5209361.html
Copyright © 2011-2022 走看看