2015-06-12 13 views
17

Xin chào Tôi đang cố gắng xuất bản một dự án cá nhân iOS (SWIFT) trong GitHub nhưng tôi sợ chia sẻ các khóa API bí mật của tôi với tất cả mọi người.Cách ẩn các khóa API trong GitHub cho các dự án iOS (SWIFT)?

Tôi đang sử dụng phân tích vì vậy tôi có một cái gì đó trong appdelegate của tôi như thế này:

let applicationId = "mySecretApplicationId" 
let clientKey = "mySecretClientKey" 
Parse.setApplicationId(applicationId!, clientKey: clientKey!) 

Tôi muốn giấu "mySecretApplicationId" và "mySecretClientKey", là có nơi kín đáo hoặc thư mục trong dự án của tôi, nơi tôi có thể đặt các biến này?

Cảm ơn!

Trả lời

23

Bạn có thể sử dụng tệp .plist nơi bạn lưu trữ tất cả các khóa quan trọng của mình. Việc đưa tệp này vào tệp .gitignore của bạn rất quan trọng.

Trong trường hợp của bạn, bạn cần phải thiết lập tập tin keys.plist của bạn như thế này: enter image description here

Và sử dụng nó bên appdelegate của bạn như sau:

var keys: NSDictionary? 

    if let path = NSBundle.mainBundle().pathForResource("Keys", ofType: "plist") { 
     keys = NSDictionary(contentsOfFile: path) 
    } 
    if let dict = keys { 
     let applicationId = dict["parseApplicationId"] as? String 
     let clientKey = dict["parseClientKey"] as? String 

     // Initialize Parse. 
     Parse.setApplicationId(applicationId!, clientKey: clientKey!) 
    } 

SWIFT 3 Cập nhật:

if let path = Bundle.main.path(forResource: "Keys", ofType: "plist") { 
     keys = NSDictionary(contentsOfFile: path) 
    } 
+1

Cũng nên lưu ý rằng ngay cả khi bạn đã làm điều này, những chìa khóa đó vẫn sẽ nằm trong lịch sử git của bạn. Để giải quyết vấn đề này, bạn chỉ cần tạo các khóa API mới chưa từng có trong kho lưu trữ ở vị trí đầu tiên. – rpowell

+1

Làm cách nào để ngăn không cho chúng được bao gồm trong "Sao chép tài nguyên đi kèm"? Người dùng cuối sẽ không thể chỉ hiển thị nội dung gói và xem tệp keys.plist bên trong thư mục Tài nguyên không? –

1

Đặt chúng vào tệp cấu hình mà bạn thêm vào tệp .gitignore. Kiểm tra tệp cấu hình mẫu mà mọi nhà phát triển có thể sử dụng để tạo cấu hình của riêng họ.

Các vấn đề liên quan