小编Jon*_*uin的帖子

无法从Google Play Android Developer API获取订阅信息

我正在使用Google API Client Library for Java来获取有关在我的Android应用程序中购买的用户订阅的信息.这就是我现在正在做的事情:

HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();

GoogleCredential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
                    .setJsonFactory(JSON_FACTORY)
                    .setServiceAccountId(GOOGLE_CLIENT_MAIL)
                    .setServiceAccountScopes("https://www.googleapis.com/auth/androidpublisher")
                    .setServiceAccountPrivateKeyFromP12File(new File(GOOGLE_KEY_FILE_PATH))
                    .build();

Androidpublisher publisher = new Androidpublisher.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).
                    setApplicationName(GOOGLE_PRODUCT_NAME).
                    build();

Androidpublisher.Purchases purchases = publisher.purchases();
Get get = purchases.get("XXXXX", subscriptionId, token);
SubscriptionPurchase subscripcion = get.execute(); //Exception returned here
Run Code Online (Sandbox Code Playgroud)

GOOGLE_CLIENT_MAIL是来自Google控制台的API Access的电子邮件地址. GOOGLE_KEY_FILE_PATH是从API Access下载的p12文件.
GOOGLE_PRODUCT_NAME是品牌信息的产品名称.
在Google APIS控制台中,启用了"Google Play Android Developer API"服务.

我得到的是:

{
  "code" : 401,
  "errors" : [ {
    "domain" : "androidpublisher",
    "message" …
Run Code Online (Sandbox Code Playgroud)

java android google-api subscription google-play

25
推荐指数
3
解决办法
2万
查看次数

HTML5缓存清单:不成功的ajax调用获得回退

我有一个HTML5应用程序,它使用缓存清单来提供脱机功能.此应用程序在联机时进行ajax调用,其中一些调用可以获得403未经授权的响应.

这是我的cache.manifest文件的底部:

NETWORK:
*

FALLBACK:
/ /offline
Run Code Online (Sandbox Code Playgroud)

如果我删除了回退部分,所有接收403响应的ajax调用都按预期工作,我可以使用jQuery错误处理程序检测到这一点并将用户重定向到登录表单.

但是如果存在回退部分,则相同的调用获得200 OK响应,并将回退HTML的内容作为正文,即使服务器回复了403,因此我无法知道用户未经过身份验证,必须发送到登录页面.

我在这里错过了什么吗?提前致谢

ajax jquery html5 application-cache cache-manifest

11
推荐指数
1
解决办法
1637
查看次数

JavaScript计算日期从今天到7天

我在今天日期之前12天计算.但它没有返回正确的日期.例如,对于今天的数据,11/11/2013(mm/dd/yyyy),当它应该返回10/31/2013时,它将返回2013年10月30日.

这是代码

var d = new Date();
d.setDate(d.getDate() - 12);
d.setMonth(d.getMonth() + 1 - 0);
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
if (curr_month < 10 && curr_date < 10) {
    var parsedDate = "0" + curr_month + "/" + "0" + curr_date + "/" + curr_year;
    alert(parsedDate);
} else if (curr_month < 10 && curr_date > 9) {
    var parsedDate = "0" + curr_month + "/" + curr_date + "/" + curr_year;
    alert(parsedDate);
} …
Run Code Online (Sandbox Code Playgroud)

javascript date

11
推荐指数
6
解决办法
5万
查看次数

10
推荐指数
1
解决办法
3550
查看次数

在创建过程中忽略Config.xml

我使用命令行工具cordova-cli时遇到问题.

我从文档中了解了每一步:

$ cordova create~/test com.test test

在这一步我想要更改www文件夹的内容:

1 - 将示例网页移动到src文件夹下.所以内容www是:

--www/
|-- config.xml
|-- src/
Run Code Online (Sandbox Code Playgroud)

2 - 使用我的数据编辑config.xml并更改content标记以指向以下正确的路径index.html:

<widget id="com.test" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>Test</name>
  <description>
                Test
  </description>
  <author email="foo@bar.com" href="http://sample.com/">
              Foo Bar
  </author>
  <content src="src/index.html"/>
  <access origin="*" />
  <preference name="fullscreen" value="true" />
  <preference name="webviewbounce" value="false" />
  <preference name="UIWebViewBounce" value="false" />    
</widget>
Run Code Online (Sandbox Code Playgroud)

更改此文件后,我继续执行一般步骤(从项目的根目录):

添加iOS平台:

$ cordova平台添加ios

然后构建项目:

$ cordova build

现在,如果我在下面打开项目,test/platforms/ios/test我会看到一个带有默认内容的config.xml:

<widget id="io.cordova.helloCordova" version="2.0.0" …
Run Code Online (Sandbox Code Playgroud)

cordova

10
推荐指数
1
解决办法
4075
查看次数

Spring Flux 和 Async 注释

我有一个 Spring Flux 应用程序,在某些时候我需要在后台执行一些繁重的任务,调用者(HTTP 请求)不需要等到该任务完成。

如果没有反应器,我可能只会使用Async注释,在不同的线程上执行该方法。对于reactor,我不确定是否应该继续采用这种方法,或者是否已经有内置机制可以实现这一点。

例如,给定一个接受Resource对象的Controller

@PostMapping("/create")
public Mono<Resource> create(@Valid @RequestBody Resource r) {
    processor.run(r); // the caller should not wait for the resource to be processed
    return repository.save(r);
}
Run Code Online (Sandbox Code Playgroud)

和一个处理器类:

@Async
void run(Resource r) { 
    WebClient webClient = WebClient.create("http://localhost:8080");
    Mono<String> result = webClient.get()
                                   .retrieve()
                                   .bodyToMono(String.class);
    String response = result.block(); //block for now
}
Run Code Online (Sandbox Code Playgroud)

HTTP 调用方/create不需要等待run方法完成。

java spring project-reactor spring-async spring-webflux

7
推荐指数
2
解决办法
7079
查看次数

将多个userInfo存储在本地通知中

我正在创建一个UILocalNotification,我需要为此设置多个userInfo,我该怎么做?

    // Create a new notification

    UIApplication* app = [UIApplication sharedApplication];

    UILocalNotification *alarm = [[UILocalNotification alloc] init];

    alarm.fireDate = date;        
    alarm.timeZone = [NSTimeZone localTimeZone];
    alarm.alertBody = msg;        
    alarm.alertAction = @"View";            
    alarm.repeatInterval = NSYearCalendarUnit;
    alarm.soundName=@"happyBirthday.wav";
    alarm.applicationIconBadgeNumber = 1;    

   NSDictionary *userDict = [NSDictionary dictionaryWithObject:detailperson forKey:@"msg"];
   NSDictionary *userDictName = [NSDictionary dictionaryWithObject:detailperson2 forKey:@"name"];

   alarm.userInfo = userDict;
   alarm.userInfo = userDictName;
Run Code Online (Sandbox Code Playgroud)

iphone uilocalnotification

3
推荐指数
1
解决办法
3237
查看次数

具有多个客户端证书的nginx客户端身份验证

我正在尝试设置NGINX来对多个客户端执行客户端身份验证.我遇到的问题是那些客户端将拥有不同的证书,基本上是不同的根CA:

[clientA.crt] ClientA > IntermediateA > RootA
[clientB.crt] ClientB > IntermediateB1 > IntermediateB2 > RootB
Run Code Online (Sandbox Code Playgroud)

我查看了NGINX文档,我注意到了该ssl_client_certificate指令.但是,单独该属性本身似乎不起作用,例如,如果我现在将其配置为仅为clientA工作:

ssl_client_certificate /etc/nginx/ssl/clientA.crt;   
ssl_verify_client on;
Run Code Online (Sandbox Code Playgroud)

然后我收到了400错误代码.通过查看其他问题,我发现我也必须使用ssl_verify_depth: 3.因此,如果我想在捆绑PEM中连接clientA和clientB以允许两个客户端,我是否需要使用高值?该指令的目的是什么?使用捆绑的PEM设置为高数字的含义是什么?

ssl nginx

3
推荐指数
1
解决办法
2653
查看次数

与C#相比,Javascript中的TripleDES实现不同

我需要复制以下C#方法来加密来自Javascript的一些文本.目前我使用的是Crypto JS,但JS的输出并不等于C#输出.

const string EncryptKey = "hello";

private static String getHexStringFromArray(byte[] arr) {
    StringBuilder sBuilder = new StringBuilder();

    for (int i = 0; i < arr.Length; i++) {
        sBuilder.Append(arr[i].ToString("x2"));
    }

    return sBuilder.ToString();
}    

public void Encrypt(string toEncrypt, bool useHashing) {
    byte[] keyArray;
    byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

    string key = EncryptKey;

    if (useHashing) {
        MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
        keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(key));

        hashmd5.Clear();
    } else
        keyArray = UTF8Encoding.UTF8.GetBytes(key);

    Console.WriteLine("hexadecimal key: " + getHexStringFromArray(keyArray));

    TripleDESCryptoServiceProvider tdes = new …
Run Code Online (Sandbox Code Playgroud)

javascript c# tripledes cryptojs

2
推荐指数
1
解决办法
5143
查看次数

尝试使用.submit在表单提交时触发jquery验证

但是当我点击提交时它没有被触发.它提交但不做任何事情.有任何想法吗?警报甚至没有被调用:(

我正在执行此操作的页面是我的Checkout页面:

http://rsatestamls.kaliocommerce.com

(需要购物车中的商品才能结帐)

我的Javascript代码是:

<script>

$(document).ready(function () {
    $("#Method input:checkbox").change(function () {
        if (this.checked) {
            var checkname = $(this).attr("name");
            $('input[type=checkbox][id=OnAccount]').prop('value', 'True')
            $("input:checkbox[name='" + checkname + "']").not(this).removeAttr("checked");
        } else {
            $('input[type=checkbox][id=OnAccount]').val('No');
        }
    });
    $("#CheckoutOptions input:checkbox").change(function () {
        if (this.checked) {
            var checkname = $(this).attr("name");
            $("input:checkbox[name='" + checkname + "']").not(this).removeAttr("checked");
        }
    });
});

$("#CheckOut").submit(function (event) {
    alert("Handler for .submit() called.");
    jQuery.validator.setDefaults({
        debug: false,
        success: "valid"
    });
    $("#CheckOut").validate({
        rules: {
            FirstName: {
                required: true
            },
            LastName: {
                required: true
            },
            Email: { …
Run Code Online (Sandbox Code Playgroud)

javascript forms validation jquery

0
推荐指数
1
解决办法
110
查看次数