小编Rya*_*ner的帖子

从Android OAuth2访问Google云端存储

我正在尝试设计一个从Google云端存储帐户下载相应声音文件的应用.该应用不会访问用户帐户,而是访问我自己的帐户.

我的阅读让我相信最合适的模式是服务帐户 https://code.google.com/p/google-api-java-client/wiki/OAuth2#Service_Accounts

不幸的是,开发人员决定不提供Android的示例.它们确实提供了一个很好的例子,只有普通的Java,可以运行 http://samples.google-api-java-client.googlecode.com/hg/storage-serviceaccount-cmdline-sample/instructions.html?r=default

我试图为Android调整这个并遇到问题.

GoogleCredential credential =
        new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
            .setJsonFactory(JSON_FACTORY).setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
            .setServiceAccountScopes(STORAGE_SCOPE)
            .setServiceAccountPrivateKeyFromP12File(new File("key.p12")).build();
Run Code Online (Sandbox Code Playgroud)

在Google的示例中,他们传递了key.p12文件,但是在Android上,当我将文件放在res/raw文件夹中时,我访问它的唯一方法就是作为输入流.我找不到一种优雅的方式来获取文件传递给JSON.

这一切都让我相信我一定是做错了.我应该使用key.p12我应该使用"服务帐户模型"吗?那里有一个例子/

谢谢瑞恩


更新我设法实现了让它工作的目标,但我的解决方案对我来说很笨拙,我确信这不是预期的方式

我所做的是添加key.p12作为我打开的原始/资源作为输入流.然后我使用库中转换为私钥,如示例中所示.

http://www.flexiprovider.de/examples/ExampleSMIMEsign.html

我的代码看起来像这样

Security.addProvider(new de.flexiprovider.core.FlexiCoreProvider());
    // Next, we have to read the private PKCS #12 file, since the the
    // private key used for signing is contained in this file:
    DERDecoder dec = new DERDecoder(getResources().openRawResource(
            R.raw.key));
    PFX pfx = new PFX();
    try {
        pfx.decode(dec);
        SafeBag safeBag = pfx.getAuthSafe().getSafeContents(0)
                .getSafeBag(0);
        PKCS8ShroudedKeyBag kBag = (PKCS8ShroudedKeyBag) safeBag
                .getBagValue();
        char[] password = "my password from …
Run Code Online (Sandbox Code Playgroud)

android google-api oauth-2.0 google-cloud-storage

9
推荐指数
1
解决办法
3329
查看次数

将NSNotification.userInfo [UIKeyboardAnimationCurveUserInfoKey]转换为Enum

使用NSNotification.userInfo中的NSNumber [UIKeyboardAnimationCurveUserInfoKey]

目标CI将执行以下操作

 [UIView animateWithDuration:1.0
                      delay:0
                    options:(curveValue.intValue << 16)
Run Code Online (Sandbox Code Playgroud)

即使bitshift运算符相同,Swift也不允许我这样做.我想获得相当于枚举的原始值

UIViewAnimationOptionCurveEaseInOut = 0 << 16,

UIViewAnimationOptionCurveEaseIn = 1 << 16,

UIViewAnimationOptionCurveEaseOut = 2 << 16,

UIViewAnimationOptionCurveLinear = 3 << 16,

更新


我不确定以下方法是否正确,似乎有效

 var animationCurve : UIViewAnimationOptions = UIViewAnimationOptions.CurveEaseOut
 info[UIKeyboardAnimationCurveUserInfoKey].getValue(&animationCurve)


 UIView.animateWithDuration(durationValue.doubleValue,
        delay: 0,
        options: animationCurve,
        animations: {self.navigationController.toolbar.frame = myRect},
        completion: nil)
Run Code Online (Sandbox Code Playgroud)

ios swift

9
推荐指数
1
解决办法
3603
查看次数

xcodebuild Interface Builder错误,失败原因:等待FIFO打开超时

在Xcode 7.1/El Capitan上使用xcodebuild构建时出错

重启没有帮助.

xcodebuild -workspace CL.xcworkspace -scheme CL -configuration Release


2015-11-12 11:55:49.889 ibtoold[5348:95303] [MT] DVTAssertions: 

Warning in
/Library/Caches/com.apple.xbs/Sources/IDEInterfaceBuilder/IDEInterfaceBuilder-9059/InterfaceBuilderKit/Utilities/IBAbstractInterfaceBuilderPlatformToolManager.m:253

Details:  Failed to attach to Interface Builder Cocoa Touch Tool with error:
Error Domain=com.apple.InterfaceBuilder Code=-1 "Encountered an error
communicating with Interface Builder Cocoa Touch Tool."
UserInfo={NSUnderlyingError=0x7fda54ba7cc0 {Error
Domain=com.apple.InterfaceBuilder Code=-1 "Failed to launch Interface Builder
Cocoa Touch Tool via CoreSimulator spawn"
UserInfo={NSLocalizedDescription=Failed to launch Interface Builder Cocoa Touch
Tool via CoreSimulator spawn, NSUnderlyingError=0x7fda54b36cf0 {Error
Domain=com.apple.InterfaceBuilder Code=-1 "Failed to handshake with platform
tool" …
Run Code Online (Sandbox Code Playgroud)

xcodebuild ios xcode7 osx-elcapitan

8
推荐指数
0
解决办法
1439
查看次数

WKWebView 中的 Javascript - 评估 JavaScript 与 addUserScript

我试图了解使用 WKWebview 执行 javascript 的最佳方式

有人可以给我使用 WKWebView 时的用例/最佳实践。

何时使用addUserScriptWKScriptMessageHandler以及何时使用evaluateJavaScript

    let jscript = "my script"
    let userScript = WKUserScript(source: jscript, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
    let userContentController = WKUserContentController()
    userContentController.addUserScript(userScript)

    let webViewConfiguration = WKWebViewConfiguration()
    webViewConfiguration.userContentController = userContentController
    webView = WKWebView(frame: self.view.bounds, configuration: webViewConfiguration)
Run Code Online (Sandbox Code Playgroud)

对比

let myScript
self.wkWebView.evaluateJavaScript(script) { (result, error) in
    if error != nil {
        print("\(error)")
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript ios swift wkwebview

8
推荐指数
2
解决办法
6354
查看次数

Xcode上Playground的默认目录

当我使用Xcode 10.1创建新的Playground时,它始终默认为〜/ Library / Autosave Information /

有什么办法可以改变吗?

在此处输入图片说明

xcode10

8
推荐指数
1
解决办法
125
查看次数

在IOS8中使用UIKeyboardWillShowNotification的keyboardWillShow

我在IOS 7和IOS 8设备上运行相同的代码,结果不同

给定一个带有两个文本字段的屏幕

在IOS 7中,如果我触摸第一个字段,则键盘会被调用,但是如果我在键盘已经显示时触摸第二个字段,则不再调用第二个字段.

在IOS 8中,keyboardWillShow被调用两次

这是记录在案的行为?

ios

7
推荐指数
1
解决办法
4765
查看次数

Firebase IOS:警告“setScreenName:screenClass:必须在视图控制器出现后调用”

我想了解我从 Firbase IOS 收到的警告

<FIRAnalytics/WARNING> setScreenName:screenClass: must be called after a view controller has appeared
Run Code Online (Sandbox Code Playgroud)

我的 info.plist 包含

FirebaseAutomaticScreenReportingEnabled = NO
Run Code Online (Sandbox Code Playgroud)

我在打电话

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    recordScreenView()    
}

func recordScreenView() {
    // title from the story board
    // These strings must be <= 36 characters long in order for setScreenName:screenClass: to succeed.
    guard let screenName = title else {
        return
    }
    let screenClass = classForCoder.description()

    // [START set_current_screen]
     GCITracking.sharedInstance.trackSetScreenName(screenName, screenClass: screenClass)
    // [END set_current_screen]
}
Run Code Online (Sandbox Code Playgroud)

从示例应用程序中获取的代码

我没有按预期看到我的屏幕事件,但我不确定这是否与我的代码有关还是 …

ios firebase google-tag-manager

7
推荐指数
1
解决办法
5333
查看次数

我们什么时候需要NDK for OpenCV Android

我刚刚开始学习Android的OpenCV,我已经玩了一下它一切正常.

我安装了NDK并设法运行包含它的一些示例应用程序.

我不清楚我们需要什么NDK.我在文档中的任何地方都找不到它.

是否有常规库2.4.8中没有的OpenCV功能?

是这样我们可以使用其他人提供的用c ++编写的模块,而不是用java重写它们吗?

android opencv android-ndk

6
推荐指数
1
解决办法
1007
查看次数

方法命名问题Swift

我希望创建一个等效的Swift方法

+ (void)insertFileWithService:(GTLServiceDrive *)service
                    title:(NSString *)title
Run Code Online (Sandbox Code Playgroud)

当我输入

func insertFileWithService(service: GTLServiceDrive,
    title title: String,
Run Code Online (Sandbox Code Playgroud)

我得到一个警告标题标题可以更简洁地表达为#title

但当我将其更改为func insertFileWithService(service:GTLServiceDrive,#title:String

我得到一个警告参数title中的无关'#'已经是关键字参数名称

我应该忽略这些警告并将其归结为Beta中的错误吗?

swift

6
推荐指数
1
解决办法
1363
查看次数

什么时候在 IOS 上触发“存储几乎已满”

我有一个临时使用大量沙箱缓存的应用程序。我想通过不填充超出触发点的磁盘来防止操作系统触发“存储几乎已满”警告。

我找不到有关如何设置此级别的文档。

是否可以为用户配置?它是设备或 IOS 版本独有的吗?

在此处输入图片说明

ios

6
推荐指数
1
解决办法
899
查看次数