반응형
공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
안드로이드 네이버 아이디 로그인 구현에 대해 포스팅했었는데요.
2017/10/17 - [안드로이드] - 안드로이드 네이버 아이디 로그인 구현하기 android naver id login
이번 포스팅에서는 로그인한 유저의 정보를 불러오는 방법에 대해서
알아보겠습니다.
먼저 지난포스팅 후 네이버아이디로그인 라이브러리가 업데이트되었습니다.
이번 포스팅에서는 최신 버전을 사용합니다.
.jar 파일이 사라지고 .aar 파일로 바뀌었습니다.
app/lib 아래에 다운받은 .aar 파일을 넣어주시고,
프로젝트를 열어
file -> Project Structure -> .aar 파일을 프로젝트로 불러옵니다.
그리고 Manifest.xml 에 internet 퍼미션을 추가해주고요.,
<uses-permission android:name="android.permission.INTERNET" />
액티비티를 만듭니다.
LoginActivity.java
OAuthLogin oAuthLogin = OAuthLogin.getInstance();
oAuthLogin.init(
this
,getString(R.string.clientId)
,getString(R.string.clientSecret)
,"amtalk"
//,OAUTH_CALLBACK_INTENT
// SDK 4.1.4 버전부터는 OAUTH_CALLBACK_INTENT변수를 사용하지 않습니다.
);
if (oAuthLogin.getAccessToken(this) != null) {
startActivity(new Intent(this,MainActivity.class));
finish();
} else {
binding.buttonOAuthLoginImg.setOAuthLoginHandler(new NaverHandler(this, oAuthLogin, this));
}
로그인 상태가 아닐 경우 else{} 블록의 코드가 실행되는데요.
NaverHandler 클래스가 필요합니다.
NaverHandler.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | public class NaverHandler extends OAuthLoginHandler { private Context mContext; private LoginActivity activity; private OAuthLogin mOAuthLoginModule; NaverHandler(Context mContext, OAuthLogin mOAuthLoginModule, LoginActivity activity) { this.mContext = mContext; this.mOAuthLoginModule = mOAuthLoginModule; this.activity = activity; } @Override public void run(boolean success) { if (success) { final String accessToken = mOAuthLoginModule.getAccessToken(mContext); // 얘가 있어야 유저 정보를 가져올 수 있습니다. ProfileTask task = new ProfileTask(); // 이 클래스가 유저정보를 가져오는 업무를 담당합니다. task.execute(accessToken); } else { String errorCode = mOAuthLoginModule.getLastErrorCode(mContext).getCode(); String errorDesc = mOAuthLoginModule.getLastErrorDesc(mContext); Toast.makeText(mContext, "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); if(object.getString("resultcode").equals("00")) { JSONObject jsonObject = new JSONObject(object.getString("response")); 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(); } } } } | cs |
별로 어렵지 않죠?
네이버 아이디 로그인 첫 번째 포스팅을 보고 나서 하시면 크게 어렵지 않으실거에요.
궁금하신 점은 댓글로 남겨주세요~
감사합니다.
반응형
'안드로이드' 카테고리의 다른 글
안드로이드 Volley http 라이브러리 사용 예제! (0) | 2018.01.05 |
---|---|
안드로이드 지문 인식 기능 추가하기 android add finger print (22) | 2017.12.07 |
안드로이드 ImageView 완전 동그랗게 만드는 방법 ( 라이브러리 없이 ) (16) | 2017.12.05 |
안드로이드 스튜디오에서 나인패치(9-patch) 이미지 만들고 영역설정하기 (0) | 2017.12.04 |
안드로이드 RecyclerView Header 추가하기 ( feat. DataBinding ) (2) | 2017.12.01 |