참조 : https://developers.naver.com/docs/login/android/
: https://stickode.com/detail.html?no=1458
1. 네이버 프로젝트 추가 및 설정
- https://developers.naver.com/apps/#/register 에서 정보 입력 필요.
- 사용 API에서 네아로 선택
- 로그인 오픈 API 서비스 환경에서 안드로이드 추가
- 다운로드 URL에 스토어에 올라간 주소 입력 (스토어에 올라가지 않은 상태라면, 회사 홈페이지등으로 설정 후 추후 변경)
- 안드로이드 앱 패키지 이름 입력
- 어플리케이션 등록 상세 : https://developers.naver.com/docs/common/openapiguide/appregister.md#%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EB%93%B1%EB%A1%9D
2. SDK 설정
- app에 있는 build.gradle에 implementation 'com.naver.nid:naveridlogin-android-sdk:4.2.6' 추가 후 sync
3. 개발 - 로그인
- 버튼 생성 및 버튼의 클릭함수 연동
- 로그인 초기화 및 통신 콜백 처리 추가
OAuthLogin module;
//외부에서 사용할 수 있도록 context를 선언하고, 함수 초기화 하는곳에서 값을 넣어야 함.(서버통신시 필요)
//이 경우 메인액티비티에 있으므로, onCreate 함수 내부에 context = this;를 적어야 함.
public static Context context;
//버튼 클릭과 연결된 함수
//로그인 모듈 초기화 진행
public void onLoginNaverClicked(View view)
{
module = OAuthLogin.getInstance();
module.init(this,"QWCMjSQ8mTpfKaP8eDeU","hFU2Ar07k2","라이브사주");
module.startOauthLoginActivity(this,handler);
}
// 로그인 이후 콜백 함수
private OAuthLoginHandler handler = new OAuthLoginHandler() {
@Override
public void run(boolean success) {
if(success)
{
String accessToken = module.getAccessToken(MainActivity.this);
// 토큰을 가지고, 사용자 프로필 조회를 위한 코드 추가. NaverLoginNetwork는
// 개발자가 구현해야 하는 클래스.
NaverLoginNetwork network = new NaverLoginNetwork();
network.SetToken(accessToken, m_naverCallback);
network.execute();
}
else
{
String errorCode = module.getLastErrorCode(MainActivity.this).getCode();
String errorDesc = module.getLastErrorDesc(MainActivity.this);
Log.d("haha","error : " + errorDesc + " code : " + errorCode);
}
};
};
// async 통신 이후 콜백 받기 위한 코드. 이부분은 추후 설명
private NaverCallback m_naverCallback = new NaverCallback() {
@Override
public void loginSuccessCallback(String email) {
Log.d("haha","email : " + email);
}
@Override
public void loginFailCallback(String error) {
Log.d("haha","error : " + error);
}
};
4. 개발 - 프로필 조회
- async로 동작해야 함. Asynctask를 상속받은 클래스를 이용하여, 네이버 requestapi 함수 이용
package com.example.pushtest;
import android.app.PendingIntent;
import android.os.AsyncTask;
import android.util.Log;
import com.nhn.android.naverlogin.OAuthLogin;
import org.json.JSONException;
import org.json.JSONObject;
public class NaverLoginNetwork extends AsyncTask<Void,Void,String> {
//로그인 성공시 토큰
private String m_token;
private NaverCallback m_callback;
public void SetToken(String token, NaverCallback callback)
{
m_token = token;
m_callback = callback;
}
@Override
protected void onPreExecute()
{
}
//실제 async 통신하는 부분
@Override
protected String doInBackground(Void... params) {
return OAuthLogin.getInstance().requestApi(MainActivity.context, m_token,"https://openapi.naver.com/v1/nid/me");
}
//통신 성공시 응답이 이곳으로 리턴됨. email을 추출하는 코드들.
protected void onPostExecute(String content)
{
try {
JSONObject obj = new JSONObject(content);
JSONObject response = obj.getJSONObject("response");
//성공시 호출할 콜백
m_callback.loginSuccessCallback(response.getString("email"));
} catch (JSONException e) {
//실패 콜백 호출
m_callback.loginFailCallback(e.getMessage());
e.printStackTrace();
}
}
}
'Android' 카테고리의 다른 글
| Android SNS 로그인 (구글) (0) | 2022.03.24 |
|---|---|
| Android 콜백 구현 (0) | 2022.03.24 |
| Android SNS 로그인 (Facebook) (0) | 2022.03.24 |
| Entry name 'res/color/material_on_surface_disabled.xml' collided 오류 대처 (0) | 2022.03.24 |
| Android Push Notification 구현 (커스텀 알림음 포함) (0) | 2022.03.24 |