0
사용자 이름과 장치 토큰을 사용하여 stackmob에 장치를 등록합니다. 나는 유효한 토큰을 c2dn에서 가져 와서 해당 사용자를 위해 db에 저장하고 stackmob에 등록하는 동안이 매개 변수를 사용하고 있습니다. dev 환경에서 잘 동작하지만 동일한 코드 조각은 장치를 등록하는 동안 401을 제공합니다. 제발 이걸 제안 해주세요. 이것에 대한장치를 등록하는 중에 Stackmob이 401 오류를 표시합니다.
코드는 다음과 같습니다 :
public String registerWithNotificationServiceProvider(final String userName, final String deviceToken) throws UserException
{
if (userName.isEmpty() || deviceToken.isEmpty()) {
throw new UserException(ResponseCodes.STATUS_BAD_REQUEST, "User Name or device token is null",## Heading ## "label.invalid.user.device.details");
}
StackMobRequestSendResult deviceRegisterResult = null;
deviceRegisterResult = StackMob.getStackMob().registerForPushWithUser(userName, deviceToken,
new StackMobRawCallback() {
@Override
public void done(HttpVerb requestVerb, String requestURL,
List<Map.Entry<String, String>> requestHeaders, String requestBody,
Integer responseStatusCode, List<Map.Entry<String, String>> responseHeaders,
byte[] responseBody) {
String response = new String(responseBody);
logger.info("request Body is " + requestBody);
logger.info("request Url is " + requestURL);
for(Map.Entry<String, String> entry : requestHeaders){
logger.info("Request Header is " + entry.getKey());
logger.info("Request Header content is " + entry.getValue());
}
for(Map.Entry<String, String> entry : responseHeaders){
logger.info("Response Header is " + entry.getKey());
logger.info("Response Header content is " + entry.getValue());
}
logger.info("response while registering the device is " + response);
logger.info("responseCode while registering device " + responseStatusCode);
}
});
String status = null;
if (deviceRegisterResult.getStatus() != null) {
status = deviceRegisterResult.getStatus().name();
logger.debug("For user : " + userName + " Status for registering device is " + status);
}
if (Status.SENT.getStatus().equalsIgnoreCase(status)) {
return Status.SUCCESS.getStatus();
} else {
return Status.FAILURE.getStatus();
}
}
사실 나는 이미 지원 티켓에이 질문에 대답했다. 로컬 시간이 길고 oauth 타임 스탬프 검사가 실패한 경우 문제가되는 것으로 나타났습니다. 최신 버전의 SDK는 타임 스탬프를 서버와 동기화하여 유지하므로 SDK를 업데이트하면 문제가 해결됩니다. –