1. Naver Developer에서 네이버 로그인 연동 API 개발 신청을 한다.
* 현재 url이 없는 경우 아무 url이나 추가 후 나중에 배포 시 url 변경
2. 개발 환경 설정 - 네이버 로그인 sdk.aar 파일 다운로드 & build.gradle 의존성 추가
* 여기서 Source code (zip) 다운로드 후 압축 풀기 -> \naveridlogin-sdk-android-4.2.6\naveridlogin_android_sdk 내 aar 파일을 libs 파일에 옮김
implementation files('libs/naveridlogin_android_sdk_4.2.6.aar') //네이버 로그인
* 위 파일 의존성 추가
2-1) 네이버 Deverloper에는 의존성이 아래와 같이 나와있다.
compile 'com.android.support:appcompat-v7:28.0.0'
compile 'com.android.support:support-core-utils:28.0.0'
compile 'com.android.support:customtabs:28.0.0'
compile 'com.android.support:support-v4:28.0.0'
* 안드로이드는 더이상 compile을 지원하지 않으므로 compile을 지원하지 않으므로 이를 implementaion으로 변경해도 여전히 오류가 난다.
오류코드: Version 28 (intended for Android Pie and below) is the last version of the legacy support library, so we recommend that you migrate to AndroidX libraries when using Android Q and moving forward. The IDE can help with this: Refactor > Migrate to AndroidX
Version 28에서는 다음과 같은 의존성을 지원하지 않는다는 뜻으로, Refactor>Migrate to AndroidX...를 해준 뒤 하단에서 Migration을 한번 더 눌러주면 다음과 같이 마이그레이션이 되어 소스가 적용된다.
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.legacy:legacy-support-core-utils:1.0.0'
implementation 'androidx.browser:browser:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
이거 알아내는데 이틀이 걸렸다... |
3. AndroidManifest.xml에 인터넷 사용 권한을 준다.
<uses-permission android:name="android.permission.INTERNET"/>
4. 일일히 client_id/client_secret 등을 설정하는 대신 strings.xml에 미리 등록해둔다.
<resources>
<string name="app_name">SnsLoginTest</string>
<string name="naver_client_id">client_id명</string>
<string name="naver_client_secret">client_secret번호</string>
<string name="naver_client_name">아무거나</string>
</resources>
5. 버튼을 미리 저장해둔 후 해당 버튼을 사용하여 레이아웃을 만든다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.nhn.android.naverlogin.ui.view.OAuthLoginButton
android:id="@+id/btn_naver_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
6. 네이버 아이디로 로그인 라이브러리 애플리케이션에 적용하기 위해 로그인 인스턴스 초기화
public static OAuthLogin mOAuthLoginModule;
public static Context mContext;
public static OAuthLoginButton mOAuthLoginButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = getApplicationContext();
// 초기화
mOAuthLoginModule = OAuthLogin.getInstance();
mOAuthLoginModule.init(
mContext
,getString(R.string.naver_client_id)
,getString(R.string.naver_client_secret)
,getString(R.string.naver_client_name)
);
mOAuthLoginButton = (OAuthLoginButton)findViewById(R.id.btn_naver_login);
mOAuthLoginButton.setOAuthLoginHandler(mOAuthLoginHandler);
}
* OAuthLogin.init() 메서드가 여러 번 실행돼도 기존에 저장된 접근 토큰(access token)과 갱신 토큰(refresh token)은 삭제되지 않습니다.
* 기존에 저장된 접근 토큰과 갱신 토큰을 삭제하려면 OAuthLogin.logout() 메서드나 OAuthLogin.logoutAndDeleteToken() 메서드를 호출합니다.
7. 로그인 로직을 구현합니다.
static private OAuthLoginHandler mOAuthLoginHandler = new OAuthLoginHandler() {
@Override
public void run(boolean success) {
if (success) {
String accessToken = mOAuthLoginModule.getAccessToken(mContext);
String refreshToken = mOAuthLoginModule.getRefreshToken(mContext);
long expiresAt = mOAuthLoginModule.getExpiresAt(mContext);
String tokenType = mOAuthLoginModule.getTokenType(mContext);
Log.i("LoginData","accessToken : "+ accessToken);
Log.i("LoginData","refreshToken : "+ refreshToken);
Log.i("LoginData","expiresAt : "+ expiresAt);
Log.i("LoginData","tokenType : "+ tokenType);
} else {
String errorCode = mOAuthLoginModule
.getLastErrorCode(mContext).getCode();
String errorDesc = mOAuthLoginModule.getLastErrorDesc(mContext);
Toast.makeText(mContext, "errorCode:" + errorCode
+ ", errorDesc:" + errorDesc, Toast.LENGTH_SHORT).show();
}
}
};
'Android > 튜토리얼 및 가이드' 카테고리의 다른 글
[Android/SDK연동]SNS 로그인 구현(4) - 페이스북 (0) | 2021.05.12 |
---|---|
[Android/SDK연동]SNS 로그인 구현(2) - 카카오톡 sdk v1 (0) | 2021.05.11 |
[Android/API]MS-SQL DB를 안드로이드 스튜디오와 연결하기 (0) | 2021.05.08 |
[Android/API]네이버 쇼핑 API 파싱 (2) JSON (0) | 2021.03.11 |
[Android/API]네이버 쇼핑 API 파싱 (1) XML (0) | 2021.02.03 |