2017-07-17 14 views
0

最近、アプリケーションをParse Serverから自分のカスタムサーバーに移行しました。プロジェクトでParse SDKをインポートせずにセッショントークンにアクセスする方法を見つけようとしています。セッショントークンが必要なので、現在ログインしているユーザーを再認証する必要はありません。iOS上で直接サーバーセッショントークンを取得するSwift

これまでのところ、私は解析SDKをインポートする必要があり、以下の方法でそれにアクセス:、私は見ていた他の解決策は、パースのプライベートドキュメントディレクトリですが、私は唯一のAPPLICATIONIDを得ることができ

 PFUser.current()?.saveInBackground(block: { [weak self] (success, error) in 
      if let error = error { 
       Log.error?.message(error.localizedDescription) 
       return 
      } 
      guard let sessionToken = PFUser.current()?.sessionToken else { 
       Log.error?.message("Did not get session token even after saving user") 
       return 
      } 
     }) 

installationIdとそこからの設定:

class ParseHelper {  
    var parsePrivateDocumentsDirectory: URL? { 
     let filemanager = FileManager.default 
     guard let libraryDirectory = filemanager.urls(for: .libraryDirectory, in: .userDomainMask).last else { 
      return nil 
     } 

     guard let parseDirectory = URL(string: "Private%20Documents/Parse/", relativeTo: libraryDirectory) else { 
      return nil 
     } 
     return parseDirectory 
    } 

    func parseFile(_ filename: String) -> URL? { 
     let filemanager = FileManager.default 
     guard let parseDirectory = self.parsePrivateDocumentsDirectory else { 
      return nil 
     } 

     guard let installationIdUrl = URL(string: filename, relativeTo: parseDirectory) else { 
      return nil 
     } 

     if filemanager.fileExists(atPath: installationIdUrl.path) { 
      return installationIdUrl 
     } else { 
      return nil 
     } 
    } 

    var installationId: String? { 
     guard let fileURL = self.parseFile("installationId"), let data = try? Data(contentsOf: fileURL) else { 
      return nil 
     } 
     let string = String(data: data, encoding: String.Encoding.utf8) 
     return string 
    } 

    var applicationId: String? { 
     guard let fileURL = self.parseFile("applicationId"), let data = try? Data(contentsOf: fileURL) else { 
      return nil 
     } 
     let string = String(data: data, encoding: String.Encoding.utf8) 
     return string 
    } 

    var config: String? { 
     guard let fileURL = self.parseFile("config"), let data = try? Data(contentsOf: fileURL) else { 
      return nil 
     } 
     let string = String(data: data, encoding: String.Encoding.utf8) 
     return string 
    } 
} 

答えて

1

Private Documents/Parseで利用可能なファイルのみが、次のとおりです。

  • APPLICATIONID
  • currentInstallation
  • あるCurrentUser
  • installationId

はsessionToken一方は、キーチェーンに格納されています。
キーは$APP_BUNDLE_ID.com.parse.sdkOfficial infoおよびsource code、およびhere'sのデータを保存するために使用されるソース)である必要があります。

問題が発生した場合は、here's問題が発生し、サーバーの移行とセッションに関する公式レポ

関連する問題