Android
Android 용 Facebook SDK
수색…
통사론
- newInstance : Facebook 헬퍼 클래스의 단일 인스턴스를 생성합니다.
- loginUser : 사용자 로그인.
- signOut : 사용자를 로그 아웃합니다.
- getCallbackManager : 페이스 북의 콜백을 얻으려면.
- getLoginCallback : 로그인 콜백을 얻으려면.
- getKeyHash : Facebook 키 해시를 생성합니다.
매개 변수
매개 변수 | 세부 |
---|---|
꼬리표 | 로그하는 동안 사용 된 문자열 |
FacebookSignInHelper | 페이스 북 도우미에 대한 정적 참조 |
CallbackManager | 페이스 북 운영을위한 콜백 |
활동 | 문맥 |
PERMISSION_LOGIN | 페이스 북에서 로그인하는 데 필요한 모든 권한이 포함 된 배열입니다. |
loginCallback | 페이스 북 로그인 콜백 |
Android에 Facebook 로그인을 추가하는 방법
build.gradle
아래의 의존성을 추가하십시오 build.gradle
// Facebook login
compile 'com.facebook.android:facebook-android-sdk:4.21.1'
유틸리티 패키지에 아래 헬퍼 클래스를 추가하십시오.
/**
* Created by Andy
* An utility for Facebook
*/
public class FacebookSignInHelper {
private static final String TAG = FacebookSignInHelper.class.getSimpleName();
private static FacebookSignInHelper facebookSignInHelper = null;
private CallbackManager callbackManager;
private Activity mActivity;
private static final Collection<String> PERMISSION_LOGIN = (Collection<String>) Arrays.asList("public_profile", "user_friends","email");
private FacebookCallback<LoginResult> loginCallback;
public static FacebookSignInHelper newInstance(Activity context) {
if (facebookSignInHelper == null)
facebookSignInHelper = new FacebookSignInHelper(context);
return facebookSignInHelper;
}
public FacebookSignInHelper(Activity mActivity) {
try {
this.mActivity = mActivity;
// Initialize the SDK before executing any other operations,
// especially, if you're using Facebook UI elements.
FacebookSdk.sdkInitialize(this.mActivity);
callbackManager = CallbackManager.Factory.create();
loginCallback = new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// You are logged into Facebook
}
@Override
public void onCancel() {
Log.d(TAG, "Facebook: Cancelled by user");
}
@Override
public void onError(FacebookException error) {
Log.d(TAG, "FacebookException: " + error.getMessage());
}
};
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* To login user on facebook without default Facebook button
*/
public void loginUser() {
try {
LoginManager.getInstance().registerCallback(callbackManager, loginCallback);
LoginManager.getInstance().logInWithReadPermissions(this.mActivity, PERMISSION_LOGIN);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* To log out user from facebook
*/
public void signOut() {
// Facebook sign out
LoginManager.getInstance().logOut();
}
public CallbackManager getCallbackManager() {
return callbackManager;
}
public FacebookCallback<LoginResult> getLoginCallback() {
return loginCallback;
}
/**
* Attempts to log debug key hash for facebook
*
* @param context : A reference to context
* @return : A facebook debug key hash
*/
public static String getKeyHash(Context context) {
String keyHash = null;
try {
PackageInfo info = context.getPackageManager().getPackageInfo(
context.getPackageName(),
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
keyHash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
Log.d(TAG, "KeyHash:" + keyHash);
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return keyHash;
}
}
귀하의 활동에 아래의 코드를 추가하십시오 :
FacebookSignInHelper facebookSignInHelper = FacebookSignInHelper.newInstance(LoginActivity.this, fireBaseAuthHelper);
facebookSignInHelper.loginUser();
OnActivityResult
아래 코드를 추가하십시오.
facebookSignInHelper.getCallbackManager().onActivityResult(requestCode, resultCode, data);
Facebook 프로필의 데이터에 액세스 할 수있는 권한 설정
사용자의 Facebook 프로필의 세부 정보를 검색하려면 동일한 프로필에 대한 권한을 설정해야합니다.
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("email", "user_about_me"));
친구 목록, 게시물, 사진 등의 권한을 계속 추가 할 수 있습니다. 바로 위 의 권한을 선택하고 위 목록에 추가하십시오.
참고 : 공개 프로필 (이름, 성, ID, 성별 등)에 액세스하기위한 명시 적 권한을 설정할 필요가 없습니다.
Facebook 로그인을위한 나만의 맞춤식 버튼 만들기
Facebook 로그인 / 가입을 처음 추가하면 버튼이 다음과 같이 보입니다.
대부분의 경우 앱의 디자인 사양과 일치하지 않습니다. 다음은 사용자 정의 할 수있는 방법입니다.
<FrameLayout
android:layout_below="@+id/no_network_bar"
android:id="@+id/FrameLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone" />
<Button
android:background="#3B5998"
android:layout_width="match_parent"
android:layout_height="60dp"
android:id="@+id/fb"
android:onClick="onClickFacebookButton"
android:textAllCaps="false"
android:text="Sign up with Facebook"
android:textSize="22sp"
android:textColor="#ffffff" />
</FrameLayout>
원래 com.facebook.login.widget.LoginButton
을 com.facebook.login.widget.LoginButton
에 랩핑하고 가시성을 FrameLayout
.
그런 다음 동일한 FrameLayout
에 사용자 정의 단추를 추가하십시오. 몇 가지 샘플 사양을 추가했습니다. 당신은 항상 페이 스북 버튼에 대한 자신의 drawable 배경을 만들고 버튼의 배경으로 설정할 수 있습니다.
마지막으로 내 맞춤 검색 버튼 클릭을 facecbook 버튼 클릭으로 변환하면됩니다.
//The original Facebook button
LoginButton loginButton = (LoginButton)findViewById(R.id.login_button);
//Our custom Facebook button
fb = (Button) findViewById(R.id.fb);
public void onClickFacebookButton(View view) {
if (view == fb) {
loginButton.performClick();
}
}
큰! 이제 버튼은 다음과 같이 보입니다.
Facebook 로그인 / 가입 구현에 대한 최소한의 가이드
필수 구성 요소 를 설치해야합니다.
AndroidManifest.xml 파일에 Facebook 활동을 추가하십시오.
<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" />
레이아웃 XML 파일에 로그인 버튼을 추가하십시오.
<com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="wrap_content" android:layout_height="wrap_content" />
이제 Facebook 버튼이 생겼습니다. 사용자가 클릭하면 Facebook 로그인 대화 상자가 앱 화면 상단에 나타납니다. 여기서 사용자는 자격 증명을 입력하고 로그인 버튼을 누를 수 있습니다. 자격 증명이 올 바르면 대화 상자에서 해당 권한을 부여하고 버튼이 포함 된 원래 활동으로 콜백이 전송됩니다. 다음 코드는 콜백을 수신하는 방법을 보여줍니다.
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { // Completed without error. You might want to use the retrieved data here. } @Override public void onCancel() { // The user either cancelled the Facebook login process or didn't authorize the app. } @Override public void onError(FacebookException exception) { // The dialog was closed with an error. The exception will help you recognize what exactly went wrong. } });
페이스 북에서 로그 아웃하기
페이스 북 SDK 4.0 이후, 우리가 로그 아웃하는 방법입니다 :
com.facebook.login.LoginManager.getInstance().logOut();
4.0 이전 버전의 경우 액세스 토큰을 명시 적으로 지워서 로그 아웃하지 않았습니다.
Session session = Session.getActiveSession();
session.closeAndClearTokenInformation();