用facebook登录到Android应用程序

Kyi*_*zin 2 android facebook-login

我想在我的Android应用程序中添加登录facebook功能.我怎样才能做到这一点?是对的吗?https://developers.facebook.com/docs/facebook-login/android

eld*_*o87 11

第一步

你注册了自己的应用吗?如果没有,请转到https://developers.facebook.com/apps/,单击右上角的添加新应用程序并按照说明操作.

第二步

第二步是将Facebook SDK添加到您的项目中.您可以按照https://developers.facebook.com/docs/android/getting-started进行操作

  • 在Android Studio中,使用API​​ 15创建一个新项目作为最低SDK

  • Facebook SDK可在Maven Central上使用,因此请先编辑build.gradle并添加 repositories { mavenCentral() }dependencies

  • 然后,添加compile 'com.facebook.android:facebook-android-sdk:4.7.0dependencies

  • 构建您的项目并将Facebook SDK初始化到您的应用程序中

代码如下:

import com.facebook.FacebookSdk;

@Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     FacebookSdk.sdkInitialize(getApplicationContext());
}
Run Code Online (Sandbox Code Playgroud)

第三步

您在注册应用时收到的Facebook应用ID应添加到您的应用中strings.xml.

<string name="facebook_app_id">123456908761030</string>
Run Code Online (Sandbox Code Playgroud)

的,你必须编辑您的AndroidManifest.xml加入INTERNET uses-permission(能够连接到Facebook的服务器)和一meta-dataApplication元素(Facebook应用程序ID).

<uses-permission android:name="android.permission.INTERNET"/>

<application android:label="@string/app_name" ...>
    ...
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
    ...
</application>
Run Code Online (Sandbox Code Playgroud)

第四步

FacebookActivity在您的清单中定义为另一个活动.如果处理大多数配置使用自行更改configChanges.

<activity android:name="com.facebook.FacebookActivity"
          android:configChanges=
                 "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
          android:theme="@android:style/Theme.Translucent.NoTitleBar"
          android:label="@string/app_name" />
Run Code Online (Sandbox Code Playgroud)

第五步

在XML布局中创建/添加登录按钮(无论您想要的位置).

<com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
Run Code Online (Sandbox Code Playgroud)

第六步

在您的Activity中,将您在布局中定义的窗口小部件声明为类的字段.

private LoginButton loginButton;
Run Code Online (Sandbox Code Playgroud)

声明一个CallbackManager另一个字段来管理应用程序中使用的回调.

private CallbackManager callbackManager;
Run Code Online (Sandbox Code Playgroud)

初始化您的实例CallbackManager.

callbackManager = CallbackManager.Factory.create();
Run Code Online (Sandbox Code Playgroud)

使用初始化小部件findViewById.

loginButton = (LoginButton) view.findViewById(R.id.usersettings_fragment_login_button);
Run Code Online (Sandbox Code Playgroud)

最后一步

创建一个回调来处理登录结果:

  • 如果登录尝试成功,onSuccess则调用

  • 如果用户取消登录尝试,onCancel则调用

  • 如果发生错误,onError则调用

代码是:

loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        // App code
    }

    @Override
    public void onCancel() {
        // App code
    }

    @Override
    public void onError(FacebookException e) {
        // App code
    }
});
Run Code Online (Sandbox Code Playgroud)

然后,在onActivityResult():

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}
Run Code Online (Sandbox Code Playgroud)

一些链接

教程TutsPlus:LINK

应用示例(slidenerd):LINK

视频教程(slidenerd):LINK

获取登录的用户信息:LINK