2016-03-27 20 views
1

Çalışması için sorun yaşıyorum. İşteCloudKitJS Sunucusuna Sunucu Yapılandırma

[Error: No key provided to sign] 

benim yapılandırma kodu: aşağıdaki hatayı almaya devam

Ayrıca
CloudKit.configure({ 
    services: { 
    fetch: fetch 
    }, 
    containers: [{ 
    containerIdentifier: 'iCloud.io.shakd.Command-Center', 
    environment: 'development', 
    serverToServerKeyAuth: { 
     keyID: "MyKeyId", 
     privateKeyFile: "./eckey.pem", 
     privateKeyPassPhrase: "MyPassPhrase" 
    } 

    }] 
}) 

, privateKeyPassPhrase nedir? Terminalde üretilen kod mu?

cevap

0

privateKeyFile şifreli bir parola ile şifrelenirse, yalnızca privateKeyPassPhrase öğesine ihtiyacınız vardır.

hata

[Error: No key provided to sign] 

düğümün kripto modülü düz geliyor.

eckey.pem dosyanızın özel bir anahtar içermediği anlaşılıyor. Sen doğrulamak için aşağıdakileri deneyebilirsiniz:

var fs = require('fs'); 
var crypto = require('crypto'); 
var privateKey = fs.readFileSync('./eckey.pem', 'utf8'); 
var signer = crypto.createSign('RSA-SHA256'); 
signer.update('message'); 
console.log(signer.sign(privateKey, 'base64')); 

bu çalışırsa, o zaman yapılandırma olmalıdır:

CloudKit.configure({ 
    services: { 
    fetch: fetch 
    }, 
    containers: [{ 
    containerIdentifier: 'iCloud.io.shakd.Command-Center', 
    environment: 'development', 
    serverToServerKeyAuth: { 
     //that looks suspicious, please use the real keyID 
     keyID: "MyKeyId", 
     privateKeyFile: "./eckey.pem" 
    } 
    }] 
}) 
+0

"Bu işe yararsa" ile ne demek istiyorsun? Teşekkürler. Bazı şifrelenmiş çıktılarım var, ancak hala imzalamak için herhangi bir anahtar verilmediğinde hata mesajı alıyorum. – malhal

1

CloudKit Catalog: An Introduction to CloudKit (Cocoa and JavaScript) de Apple'ın örnek kod, privateKeyFile için gerekli sözdizimi __dirname başa ekleyerek olduğunu gösterir (Yürüten Düğüm komut dosyasının dizini) eckey.pem dosyasına. config.js Gönderen:

serverToServerKeyAuth: { 
    keyID: '<insert key ID>', 
    privateKeyFile: __dirname + '/eckey.pem' 
} 

bilginin ikinci kritik parça CloudKit yapılandırmadan sonra, açıkça setUpAuth() kullanarak oturum zorunda olmasıdır. index.js Gönderen:

var container = CloudKit.getDefaultContainer(); 
var database = container.publicCloudDatabase; // We'll only make calls to the public database. 

// Sign in using the keyID and public key file. 
container.setUpAuth().then(function (userInfo) { 
    println("userInfo", userInfo); 
    return database.performQuery({ recordType: 'Test' }); 
}).then(function (response) { 
    println("Queried Records", response.records); 
}).catch(function (error) { 
    console.warn(error); 
}); 

benim JavaScript kodu bu iki değişiklik yaptıktan sonra, benim komut dosyası okuma için doğrulanmış oldu ve benim CloudKit veritabanına yazma.

+0

Tüm yapmam gereken container.setUpAuth(); – malhal

İlgili konular