<kakaoRegisterRequest.java>
import android.os.Bundle;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import java.util.HashMap;
import java.util.Map;
public class KakaoRegisterRequest extends StringRequest {
final static private String url = "https://education-essential.firebaseio.com/";
private Map<String, String> properties;
public KakaoRegisterRequest(String nickname, Response.Listener<String> listener) {
super(Method.POST, url, listener, null);
properties = new HashMap<>();
properties.put("nickname", "Leo");
}
public Map<String, String> getProperties() {
return properties;
}
}
미리 지정된 양식 사용은 4개의 띄어쓰기로 들여쓰세요.-----------------------------------
<SampleSignupActivity.java>
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.crashlytics.android.Crashlytics;
import com.kakao.auth.ApiResponseCallback;
import com.kakao.network.ErrorResult;
import com.kakao.usermgmt.ApiErrorCode;
import com.kakao.usermgmt.UserManagement;
import com.kakao.usermgmt.callback.MeV2ResponseCallback;
import com.kakao.usermgmt.response.MeV2Response;
import com.kakao.util.OptionalBoolean;
import java.util.Map;
import io.fabric.sdk.android.Fabric;
/**
- 유효한 세션이 있다는 검증 후
- me를 호출하여 가입 여부에 따라 가입 페이지를 그리던지 Main 페이지로 이동 시킨다.
*/
public class SampleSignupActivity extends BaseActivity {
/**
* Main으로 넘길지 가입 페이지를 그릴지 판단하기 위해 me를 호출한다.
* @param @savedInstanceState 기존 session 정보가 저장된 객체
*/
protected void showWaitingDialog() {
WaitingDialog.showWaitingDialog(this);
}
protected void cancelWaitingDialog() {
WaitingDialog.cancelWaitingDialog();
}
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fabric.with(this, new Crashlytics());
requestMe();
// TODO: Move this to where you establish a user session
logUser();
}
private void logUser() {
// TODO: Use the current user's information
// You can call any combination of these three methods
Crashlytics.setUserIdentifier("1004");
Crashlytics.setUserEmail("user@fabric.io");
Crashlytics.setUserName("카카오 관리자");
}
protected void showSignup() {
setContentView(R.layout.layout_usermgmt_signup);
final ExtraUserPropertyLayout extraUserPropertyLayout = findViewById(R.id.extra_user_property);
Button signupButton = findViewById(R.id.buttonSignup);
signupButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
requestSignUp( extraUserPropertyLayout.getProperties());
}
});
}
private void requestSignUp(final Map<String, String> properties) {
UserManagement.getInstance().requestSignup(new ApiResponseCallback<Long>() {
@Override
public void onNotSignedUp() {
}
@Override
public void onSuccess(Long result) {
// 여기에 추가
getInfo();
requestMe();
}
@Override
public void onFailure(ErrorResult errorResult) {
final String message = "UsermgmtResponseCallback : failure : " + errorResult;
com.kakao.util.helper.log.Logger.w(message);
KakaoToast.makeToast(getApplicationContext(), message, Toast.LENGTH_LONG).show();
finish();
}
@Override
public void onSessionClosed(ErrorResult errorResult) {
}
}, properties);
}
/**
* 사용자의 상태를 알아 보기 위해 me API 호출을 한다.
*/
protected void requestMe() {
UserManagement.getInstance().me(new MeV2ResponseCallback() {
@Override
public void onFailure(ErrorResult errorResult) {
String message = "failed to get user info. msg=" + errorResult;
Logger.d(message);
int result = errorResult.getErrorCode();
if (result == ApiErrorCode.CLIENT_ERROR_CODE) {
KakaoToast.makeToast(getApplicationContext(), getString(R.string.error_message_for_service_unavailable), Toast.LENGTH_SHORT).show();
finish();
} else {
redirectLoginActivity();
}
}
@Override
public void onSessionClosed(ErrorResult errorResult) {
Logger.e("onSessionClosed");
redirectLoginActivity();
}
@Override
public void onSuccess(MeV2Response result) {
if (result.hasSignedUp() == OptionalBoolean.FALSE) {
getInfo();
showSignup();
}
else {
redirectMainActivity();
}
}
@Override
public void onDidStart() {
showWaitingDialog();
}
@Override
public void onDidEnd() {
cancelWaitingDialog();
}
});
}
private void getInfo() {
Intent getintent = new Intent(this, KakaoRegisterRequest.class);
startActivity(getintent);
}
private void redirectMainActivity() {
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
}
사용자의 정보 요청 및 저장은 firebase(데이터베이스에) 적용하는 방법이 안 나와 있습니다.
아래 예제 있는 대로 구현을 하였고, 이 과정에서 데이터베이스에 잡히지 않는 점이 발생하고 있습니다.
앱은 정상적으로 작동되고 있구요…
어떻게 받아야 하는지