안드로이드 네이버 로그인 연동하기
오늘은 네이버 로그인을 연동하는 포스팅을 쓰려고 한다.
1. 라이러리 폴더에 네이버로그인 sdk 추가하기
2. xml로 네이버 로그인 버튼 만들어주기
※필자의 경우 네이버 로그인 버튼을 커스텀 해서 쓰기 위해 gone 처리 하였다
<com.nhn.android.naverlogin.ui.view.OAuthLoginButton
android:layout_width="wrap_content"
android:layout_height="50dp"
android:id="@+id/button_naverlogin"
android:visibility="gone"/>
3. JAVA 파일에 로그인 버튼 선언하여 네이버 로그인 정보 가져오기
public static OAuthLogin mOAuthLoginModule;
private void setNaver() {
mOAuthLoginModule = OAuthLogin.getInstance();
mOAuthLoginModule.init(this, "본인의 키", "본인의 시크릿키", "clientName");
//mOAuthLoginButton = findViewById(R.id.button_naverlogin);
binding.buttonNaverlogin.setOAuthLoginHandler(mOAuthLoginHandler);
mOAuthLoginModule.startOauthLoginActivity(this, mOAuthLoginHandler);
}
private OAuthLoginHandler mOAuthLoginHandler = new OAuthLoginHandler() {
@Override
public void run(boolean success) {
if (success) {
password = mOAuthLoginModule.getAccessToken(act);
//getNaverInfo(accessToken);
ProfileTask task = new ProfileTask();
// 이 클래스가 유저정보를 가져오는 업무를 담당합니다.
task.execute(password);
String refreshToken = mOAuthLoginModule.getRefreshToken(act);
long expiresAt = mOAuthLoginModule.getExpiresAt(act);
String tokenType = mOAuthLoginModule.getTokenType(act);
} else {
String errorCode = mOAuthLoginModule.getLastErrorCode(act).getCode();
String errorDesc = mOAuthLoginModule.getLastErrorDesc(act);
Toast.makeText(act, "errorCode:" + errorCode
+ ", errorDesc:" + errorDesc, Toast.LENGTH_SHORT).show();
}
};
};
class ProfileTask extends AsyncTask<String, Void, String> {
String result;
@Override
protected String doInBackground(String... strings) {
String token = strings[0];// 네이버 로그인 접근 토큰;
String header = "Bearer " + token; // Bearer 다음에 공백 추가
try {
String apiURL = "https://openapi.naver.com/v1/nid/me";
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("Authorization", header);
int responseCode = con.getResponseCode();
BufferedReader br;
if (responseCode == 200) { // 정상 호출
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
} else { // 에러 발생
br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = br.readLine()) != null) {
response.append(inputLine);
}
result = response.toString();
br.close();
System.out.println(response.toString());
} catch (Exception e) {
System.out.println(e);
}
//result 값은 JSONObject 형태로 넘어옵니다.
return result;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
try {
//넘어온 result 값을 JSONObject 로 변환해주고, 값을 가져오면 되는데요.
// result 를 Log에 찍어보면 어떻게 가져와야할 지 감이 오실거에요.
JSONObject object = new JSONObject(result);
Log.d(CommonUtil.TAG,"결과 : "+result);
if (object.getString("resultcode").equals("00")) {
JSONObject jsonObject = new JSONObject(object.getString("response"));
email = jsonObject.getString("id");
Log.d("jsonObject", jsonObject.toString());
/*SharedPreferences.Editor editor = activity.userData.edit();
editor.putString("email", jsonObject.getString("email"));
editor.putString("name", jsonObject.getString("name"));
editor.putString("nickname", jsonObject.getString("nickname"));
editor.putString("profile", jsonObject.getString("profile_image"));
editor.apply();
Intent intent = new Intent(activity, MainActivity.class);
activity.startActivity(intent);*/
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
다른 좋은 방법이 있으면 공유 및 답글 부탁드립니다.
이상 오늘은 네이버로 로그인 연동하기를 포스팅 마치겠습니다.
※파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음※
#안드로이드 #android #초급 #개발자 #네이버 #로그인 #연동
'IT개발일지 > Android' 카테고리의 다른 글
[Android]중복 notification PendingIntent 관련 중복 알림 (0) | 2019.05.08 |
---|---|
[Android] 안드로이드 Excel 파일 만들기 (0) | 2019.04.12 |
[Android] TextView 부분 글자 색상 변경 (0) | 2019.03.18 |
[Android] 초간단 카카오톡 로그인 연동 (0) | 2019.03.04 |
[Android]Click ViewPager 터치/클릭 (0) | 2019.03.04 |