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>

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

  

时间: 2024-10-13 11:43:03

Android 集成FaceBook实现第三方登陆的相关文章

利用FaceBook实现第三方登陆(自定义登陆按钮,非官方按钮)并获取用户数据

最近公司要写集成登陆SDK,具体集成那些我就不说了,其中就包含需要使用facebook登陆自己的app,于是我苦心研究facebook,写完后发现各种问题,对于问题我当然去查阅官方文档看怎么解决,结果一查,我的天,SDK更新了,以前是两种方式loginButton和UserSettingsFragment,而对于两种方式来说都不适合我,因为我要写sdk供别人使用,所以别人要用那种登陆按钮需要用户自己定义,而不是用facebook自己的.对于两种方式来说,由于第二种不需要开发者参与,布局按钮都是f

Android集成主流优秀第三方组件框架

Android集成主流优秀第三方组件框架 这是一个集成目前Android主流优秀第三方组件.优秀好用的自定义控件.实用工具类封装. 以及一些APP共通模块(比如:版本更新.意见反馈.引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方开源组件: 网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码库 百度地图定位S

Android集成Facebook sdk,Key Hashes生成步骤

如上图所示,使用facebook sdk进行login和share的时候,需要新建android平台,用到key hashes,生成方法有两种: 方法一: keytool -exportcert -alias 'Nom Nom Eat' -keystore nomnom.jks |openssl sha1 -binary | openssl base64 注意事项: 1,使用上述命令请替换-alias 和 -keystore后面的东西,只需要替换这两处即可. 2,-alias后面跟的是自己的ke

Android 中实现分享和第三方登陆---以新浪微博为例

尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38781957 第三方登陆和分享功能在目前大部分APP中都有,分享功能可以将自己觉得有意义的东西分享给身边的朋友,而第三方登陆可以借助已经有巨大用户基础的平台(如QQ和新浪微博)的账号,让用户在使用自己APP的时候不用注册,直接使用第三方账号登陆,从而避免了注册的过程(其实是服务器端帮你注册),这对于吸引更多的用户非常有意义.下面我们就以新浪微博为例,讲解如何实现分享功能和第三方登陆.首先你

Android 应用程序集成FaceBook 登录及二次封装

1.首先在Facebook 开发者平台注册一个账号 https://developers.facebook.com/ 开发者后台  https://developers.facebook.com/apps 2.创建账号并且获得 APP ID 图一 图二 图三 图四 图五 3.获取app签名的Key Hashes 值(两种方式) 3.1方法1: 1 package com.pegasus.map.presentation.utils; 2 import android.content.Contex

android QQ第三方登陆 错误 登陆授权失败(错误码:110406)

错误提示: 原因分析:自己的应用没有上线,自己QQ也米有设置为开发调试账号,所有就授权失败 android QQ第三方登陆 错误 登陆授权失败(错误码:110406)

umeng_communitySDK第三方登陆集成

第一步:先登陆友盟账号: 如果没有友盟账号就先去注册一个友盟账号: 第二步登陆成功: 点击友盟开发者中心中的:SDK与文档 第三步:在SDK与文档中找到U-COMS微社区 点击U-COMS微社区 第四步:根据友盟的SDK步骤 第五步:下载最新的SDK然后并且把SDK包拖到工程中例如:umeng_community_ios_v2.5.0 刚刚导入SDK时候会出现跟多错误,所以接下来一步步解决 { 首先添加Framework { 先点击工程:找到Build Phases—>Link Binary W

使用Shares实现第三方登陆

第一步注册获取AppKey,就是所谓的唯一标识 注册的步骤:官网注册应用得到appkey,请点击链接看里面的操作步骤.   第二步下载SDK: 获取ShareSDK-iOS v3.x:下载地址   第三步集成SDK 在Build Phases中的Link Binary With Libraries中添加对应的framework 如果添加时候找不到,那么就需要点击add other按钮进行添加 { 进入时候会出现一个finder的界面,然后点击command+shift+G就见到上边一一串地址 然

[android]初识ShareSDK——嵌入和登陆

ShareSDK可以做什么 ShareSDK是一个第三方分享平台,集成了常用的一些平台分享:例如QQ.微信.新浪微博.腾讯微博.开心网.人人网等等,可以理解为,ShareSDK本身不产生数据,只是提供了这样一个平台.好处是:开发者不必单个再去实现各个网站的分享,可以轻松的实现登陆,分享,获得用户资料,数据统计分析等等. 如何将ShareSDK嵌入到项目中 在Sharesdk平台上注册登录添加应用,下载和安装SDK的安装包 集成sdk到项目中(双击QuickIntegrater启动程序,复制生成的