-
[Android]안드로이드 앱에 SNS공유 기능 넣기(with 페이스북 링크)Development/Android 2016. 12. 21. 01:27반응형
테스트 환경
안드로이드 버전
6.0.1
기기명(모델)
삼성 갤럭시노트4S-LTE(SM-N916L)
개발 툴
안드로이드 스튜디오 2.2.3
테스트 날짜
2016-12-21
이번에는 페이스북 openAPI를 활용하여 공유하는 방법을 설명 드립니다.
사용법은 카카오톡 링크 거는 법과 비슷합니다. (아래 링크 참고)
[Android]안드로이드 앱에 SNS공유 기능 넣기(with 카카오링크)
우선 페이스북 개발자 홈페이지(https://developers.facebook.com/)로 가서 회원가입(혹은 로그인)을 한 뒤 키 다음 절차를 따릅니다.우측 상단에서 [새 앱 추가]를 눌러 추가합니다.
해당 사항을 입력 후 [앱 ID 만들기]를 누릅니다.
이후 왼쪽 탭에서 [대시보드]에 들어가면
자신의 [앱 ID]값이 나오는데 이는 메모장에 따로 복사를 해둡니다.
[플랫폼 선택]을 누르고 해당 OS(안드로이드)를 선택하면 다음과 같은 창이 뜹니다.
패키지명과 시작 액티비티 클래스명을 입력합니다.(위 화면 자세히 보시면 정말 상세하게 어떻게 진행하는지 잘 나와있습니다)그러면 HashKey를 입력하라고 나옵니다. 디버그용, 릴리즈(배포)용 HashKey를 얻는 법은 위에 친절히 설명되어 있습니다.
[페이스북 디버그용 해시 키 생성]
윈도우키 + R을 눌러 명령프롬프트를 실행하여
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
위 내용을 그대로 복사 후 붙여 넣습니다. (위 내용은 윈도우용입니다)
// 다른 글에서는 KeyTool.exe 파일이 있는 [C:\Program Files\Java\jre1.8.0_111\bin] 폴더에서 실행하라는 말도 있던데 저는 그냥 cmd에서 실행해도 되더라구요~
비밀번호는 android 입니다.
[페이스북 릴리즈용 해시키 생성]
릴리즈용으로 해시키를 생성하려면 다음과 같이 하면됩니다.
keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64
처음엔 YOUR_RELEASE_KEY_ALIAS와 YOUR_RELEASE_KEY_PATH에 뭘 넣어야 되는지 몰라 5분정도 구글링하느라 시간낭비했습니다 ㅠ
안드로이드 스튜디오에서 [Build]-[Generate Signed APK]에 들어가면 다음과 같은 창이 뜹니다.
YOUR_RELEASE_KEY_PATH = > Key store path
YOUR_RELEASE_KEY_ALIAS = > Key alias
키 저장소 비밀번호 = > Key store password
이렇게 매칭해주면 됩니다.
키가 없으신 분들은 Create New..를 눌러서 생성하시면 됩니다.
그럼 위 화면처럼 비밀번호를 입력하라고 하면 키 스토어 암호를 입력합니다. 그리고 해시키가 나타납니다.
0E+X2ABl7cdef+/QEwsJMvakSK5A= .. 뭐 이런식으로 나옵니다
해시키를 입력하면 또 다음과 같이 화면이 나타납니다. 이 곳에는 해시키를 여러개 등록 할 수 있는데 디버그용, 릴리즈용 둘 다 등록하셔도 무방합니다.
그리고 SSO (Singl Sign On)도 YES로 바꿔줍니다.
주의사항 : 비밀번호가 틀려도 오류가 발생하거나 다른 값을 넘겨주지 않습니다. 다만 다른 해시키 값을 알려 줄 뿐입니다.
이를 정확히 넘겨짚고 가시려면 안드로이드 소스파일에 다음 내용을 입력하여 디버그해서 로그 기록을 살펴봅니다.
릴리즈용은 릴리즈 한뒤 로그를 보시면 알 수 있습니다.
try {
PackageInfo info = getPackageManager().getPackageInfo( getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.d("KeyHash:", "name not found");
} catch (NoSuchAlgorithmException e) {
Log.d("KeyHash:", "no such");
}[안드로이드 설정]
이제부터는 다시 안드로이드 스튜디오에서 설정을 진행하면 됩니다.
1. 우선 페이스북 SDK는 안드로이드 4.0.3 혹은 그 이상버전에서 작동을 하므로 프로젝트 생성 시 min sdk를 최소 4.0.3버전으로 설정해주세요.
2. 그리고 build.gradle(Module:app)에서 다음 내용을 추가합니다.
repositories { mavenCentral() }
compile 'com.facebook.android:facebook-android-sdk:4.+'
3. values-strings.xml에 다음과 같이 facebook id값을 추가합니다. 이 아이디값은 본인 앱 ID 값을 말합니다.
<string name="facebook_app_id">1234567890123456</string>
4. AndroidManifest.xml에 다음과 같이 인터넷 퍼미션을 추가합니다.
<uses-permission android:name="android.permission.INTERNET"/>
5. 그리고 이어서 다음과 같이 내용을 입력합니다.
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
6. 끝으로 페이스북 공유를 위해 더 추가합니다.
<provider android:authorities="com.facebook.app.FacebookContentProvider1234567890123456"
android:name="com.facebook.FacebookContentProvider" android:exported="true"/>1234567890123456 를 지우고 자신의 앱 ID값을 입력하면 됩니다.
(이미지를 클릭하면 원본 크기로 볼 수 있습니다)
자, 이제 아래 소스만 입력하면 끝입니다!
onCreate() 메소드에 아래와 같이 페이스북 api를 사용할 수 있도록 준비합니다.
FacebookSdk.sdkInitialize(getApplicationContext());
AppEventsLogger.activateApp(this);그리고 사용하면 끝이죠~
public void shareFacebook()
{
ShareLinkContent content = new ShareLinkContent.Builder()//링크의 콘텐츠 제목
.setContentTitle("페이스북 공유 링크입니다.")
//게시물에 표시될 썸네일 이미지의 URL
.setImageUrl(Uri.parse("https://lh3.googleusercontent.com/hmVeH1KmKDy1ozUlrjtYMHpzSDrBv9NSbZ0DPLzR8HdBip9kx3wn_sXmHr3wepCHXA=rw"))
//공유될 링크
.setContentUrl(Uri.parse("https://play.google.com/store/apps/details?id=com.handykim.nbit.everytimerfree"))
//게일반적으로 2~4개의 문장으로 구성된 콘텐츠 설명
.setContentDescription("문장1, 문장2, 문장3, 문장4")
.build();
ShareDialog shareDialog = new ShareDialog(this);shareDialog.show(content, ShareDialog.Mode.FEED); //AUTOMATIC, FEED, NATIVE, WEB 등이 있으며 이는 다이얼로그 형식을 말합니다.
}
만약 다음과 같은 에러가 뜬다면 아래처럼 설정해주세요~
Caused by: java.lang.NoSuchMethodError: No direct method <init>(Landroid/widget/ImageView;Landroid/support/v7/widget/AppCompatDrawableManager;)V in class Landroid/support/v7/w
저 같은 경우는 FloatingActionButton과 페이스북 sdk 간에 무언가 충돌이 일어나지 않았나 싶은데요
Gradle.build(app)에
compile 'com.android.support:appcompat-v7:24.2.0'
compile 'com.android.support:design:24.2.0'
compile 'com.android.support:support-v4:24.2.0'이처럼 24.2.0으로 버전을 올려준 뒤 컴파일하니 해결되었습니다.
아, 참고로 페이스북에서는 앱에서 iTunes나 Google Play 스토어의 링크를 공유하는 경우 공유된 콘텐츠에 지정하는 설명이나 이미지는 게시하지 않습니다.
상업용으로 사용하는걸 방지하기 위해서인 것 같네요 ㅎㅎ 참고하세요
앱 다운로드 : https://play.google.com/store/apps/details?id=com.handykim.nbit.everytimerfree
개발된 앱 정보 보기 : http://citynetc.tistory.com/146
2016/12/20 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 카카오링크)
2016/12/22 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 트위터 링크)
2016/12/23 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 인스타그램 링크)
2016/12/23 - [Programming/Android] - [Android]안드로이드 앱에 SNS공유 기능 넣기(with 라인)
반응형'Development > Android' 카테고리의 다른 글
[안드로이드]커스텀 다이얼로그 해상도 비율에 맞게 크기 조절하기 (0) 2017.09.29 [Android]안드로이드 - 앱을 설치할 수 없음 505에러 뜨는 원인 (0) 2016.12.24 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 라인) (0) 2016.12.23 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 인스타그램 링크) (9) 2016.12.23 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 트위터 링크) (1) 2016.12.22 [Android]안드로이드 앱에 SNS공유 기능 넣기(with 카카오링크) (2) 2016.12.20 [Android]SQLite db에 이미지(비트맵,Drawable) 저장(읽기,쓰기) 하는 법 (3) 2016.11.03 [Android]안드로이드 버전에 따른 AlarmManager 사용법 (6) 2016.09.29 [Android]디바이스 화면 켜기 (0) 2016.09.29 [Android]ViewPager 내부 Fragment와 ListView, Item 갱신하기 (17) 2016.06.10