0

username と device token を使用してデバイスを stackmob に登録しています。c2dn から有効なトークンを取得し、そのユーザーのデータベースに格納し、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();
    }

}
4

1 に答える 1

1

API キーとシークレットを使用して StackMob オブジェクトをセットアップするとき、製品キーとシークレットで apiVersion 1 を使用することを覚えていますか? それが最も可能性の高い問題です。

StackMobCommon.API_KEY = KEY;
StackMobCommon.API_SECRET = SECRET;
StackMobCommon.USER_OBJECT_NAME = "user";
StackMobCommon.API_VERSION = 1; //! 0 for dev, 1 for production

それが機能しない場合は、StackMob.getStackMob().getLogger().setLogging(true); も設定します。最初に、結果のログを投稿します

于 2012-07-06T19:04:12.633 に答える