네아로 구현 관련
다음 에러가 뜬다.
2024-04-04 23:26:04.121 27710-27710 test com.mksoo.postingautomation E invalid_request client info invalid.
불행인지 다행인지, 몇번 끄적이다 보니 원인이 다음 코드였다.
이 코드를
NaverIdLoginSDK.initialize(context,
{BuildConfig.OAUTH_CLIENT_ID}.toString(),
{BuildConfig.OAUTH_CLIENT_SECRET}.toString(),
{BuildConfig.OAUTH_CLIENT_NAME}.toString()
)
이렇게 바꾸면 됐다.
NaverIdLoginSDK.initialize(context,
BuildConfig.OAUTH_CLIENT_ID,
BuildConfig.OAUTH_CLIENT_SECRET,
BuildConfig.OAUTH_CLIENT_NAME
)
빌드하는 과정에서 에러가 났었는지, 원래는 아래 코드에서 빨간줄이 그였는데, 어찌저찌하니까 해결됐다..ㅎ 어쨌든 잘 된다니 다행!
로그인에 성공하면 accessToken과 refreshToken을 받을 수 있는데, 이걸 cafe에 글을 쓸 때 사용해야 한다.
(글을 적다보니, 액세스 토큰이 만료되어서 지금 에러가 나는 것 같다… 참고로 액세스 토큰은 한시간마다 만료가 되어서 만료가 될때마다 새로 발급받아야한다.!)
버그: waiting for debugger 해결법
안드로이드에 프로그램을 설치하고 디버그를 하다가 그냥 run을 눌러서 프로그램을 돌렸을 때, 'waiting for debugger' 창이 뜨고 프로그램이 작동을 안하는 버그가 발생했다.
그냥 버그인 듯 하다..
핸드폰을 껐다 키거나 디버거 모드 껐다 키거나 이것저것 하다보면 된다고 한다. 하하
[Android Studio] Android, Waiting for Debugger가 없어지지 않을 때
[Android Studio] Android, Waiting for Debugger가 없어지지 않을 때
19.12.25에 네이버 블로그에 작성했던 글노트북에 기기를 연결해서 앱을 실행했을때 앱이 실행은 되는데 Waiting for Debugger 라는 문구가 뜨면서 화면이 안나오는 문제였던 것으로 기억한다.여러 글
velog.io
java.io.IOException: Server returned non-OK status: 401
이거는 accessToken이 안먹힐 때 발생하는 에러인데,
로그인을 한 뒤인데도 이 에러가 발생한다면, 혹시 로그인을 하고 난 뒤 약 한시간이 넘지 않았을까 생각해봐야 할 수도 있다.
accessToken이 한시간뒤에는 만료되기 때문에, 재발급을 받아야 한다.
즉, 나는 accessToken을 받고 한시간이 지나 버려서 이 이슈를 경험한 것이다..!
따라서 로그인을 할 떄 만료가 되는 시간도 같이 저장하고
fun saveTokenAndTime(accessToken: String?, refreshToken: String?, expireTime: Long) {
setAccessToken(accessToken)
setRefreshToken(refreshToken)
setExpireTime(expireTime)
}
유저 정보가 필요할 때, 만료시간이 되었다면 refreshToken을 이용해 accesstoken을 갱신해야 한다.
if (current > (expireTime + 3600)) {
// 토큰 만료시 토큰 재발급해서 sharedPreference에 저장
val refreshToken = Utils(context).getRefreshToken()
Utils(context).refreshAccessToken(BuildConfig.OAUTH_CLIENT_ID, BuildConfig.OAUTH_CLIENT_SECRET, refreshToken)
Utils(context).getAccessToken()
}
Utils.kt
fun refreshAccessToken(clientId: String, clientSecret: String, refreshToken: String) {
Thread {
val url = URL("https://nid.naver.com/oauth2.0/token?grant_type=refresh_token&client_id=$clientId&client_secret=$clientSecret&refresh_token=$refreshToken")
val connection = url.openConnection() as HttpURLConnection
try {
connection.requestMethod = "GET"
val responseCode = connection.responseCode
Log.d("test", "Response Code: $responseCode")
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader(InputStreamReader(connection.inputStream)).use { inBuffer ->
val response = inBuffer.lines().collect(Collectors.joining())
val jsonObject = org.json.JSONObject(response)
val accessToken = jsonObject.getString("access_token")
val reRefreshToken = jsonObject.getString("refresh_token")
val current = System.currentTimeMillis()/1000
val expireTime = current + jsonObject.getLong("expires_in")
// SharedPreferences에 AccessToken과 RefreshToken, expireTime 저장
Utils(context).saveTokenAndTime(accessToken, reRefreshToken, expireTime)
Log.d("test", "refreshAccessToken Response: $response")
}
} else {
Log.d("test", "GET request not worked")
}
} finally {
connection.disconnect()
}
}.start()
}
완성…!
https://cafe.naver.com/informpaper
지역 정보 게시판/공공포스터/ : 네이버 카페
인터넷에서는 잘 나와있지 않는, 포스터로 된 지역 정보들을 찍어서 올리는 목적으로 개설된 카페입니다.
cafe.naver.com
Future Work
- 이미지를 처리해서 이미지 번역 결과물의 품질 이슈
- 문제점
- 들쭉날쭉한 이미지 번역 텍스트의 품질. 정답이 맞지 않는 이슈.
- 포스터로 인식이 되지 않는 경우, 원하는 형식과 다른 텍스트를 출력해서 AI 답변을 처리하는 과정(json → 일반 텍스트 문)에서 에러가 발생.
- 해결방법:
- 네이버 클로바와 같은 한국어를 주로 다루는 모델을 사용하기
- 프롬프트 엔지니어링을 통해 해결하기
- 코드 상에서 예외가 발생할 때 처리하기
- 예외 상황을 사용자에게 알리기
- 예외 상황을 코드상에서, 사용자 단계에서 어떻게 처리할지 고민
- 사진을 잘 찍기 - 빛 반사 주의
- 문제점
- 카메라로 찍어서 바로 올리는 기능도 추가하기
- 현재 진행 상태를 추적할 수 있는 출력 문구가 필요
- openAI에 request → openAI에서 response → response를 처리(return. 제목, 요약) → 네이버 카페 request → 업로드 완료
- gpt api를 통해서 나온 텍스트(제목, 내용)를 사용자가 알게 하기
- (할지말지 고민) gpt api를 통해서 나온 텍스트를 사용자가 수정할 수 있게 하는 단계를 추가할지?
'진행중' 카테고리의 다른 글
[프로젝트] 지역 공공 포스터를 포스팅해보자. 번외) 안드로이드에서 비밀키를 관리하는 법. (0) | 2024.04.09 |
---|---|
[프로젝트] 지역 공공 포스터를 포스팅해보자. 5) 네이버 카페에 글 올리기 (4) | 2024.04.09 |
[프로젝트] 지역 공공 포스터를 포스팅해보자. 4) chatGPT api에 prompt와 이미지를 전송해서 답변을 받아내기 (0) | 2024.04.09 |
[프로젝트] 지역 공공 포스터를 포스팅해보자. 3) 갤러리에서 이미지를 불러오기 (0) | 2024.04.09 |
[프로젝트] 지역 공공 포스터를 포스팅해보자. 2) 네이버 아이디로 로그인(네아로) 구현 (0) | 2024.04.08 |