cocoa-touch - 尝试使用 ShareKit 在 Twitter 上发帖时收到错误消息

标签 cocoa-touch twitter oauth uinavigationcontroller sharekit

我正在尝试使用 sharekit 在 Twitter 和 Facebook 上发帖。

我有两个按钮调用以下两种方法:

- (IBAction) shareOnFacebook:(id)sender
{
    // Create the item to share 
    NSString *someText = @"Share on Facebook.";
    SHKItem *item = [SHKItem text:someText];

    // Share the item
    [[SHK currentHelper] setRootViewController:self.navigationController];
    [SHKFacebook shareItem:item];
}

- (IBAction) shareOnTwitter:(id)sender
{
    // Create the item to share 
    NSString *someText = @"Share on Twitter.";
    SHKItem *item = [SHKItem text:someText];

    //tried both methods to set navigationcontroller!
    [[SHK currentHelper] setRootViewController:self.navigationController];
    [SHK setRootViewController:self.navigationController];  

    [SHKTwitter shareItem:item];
}

Facebook 只能工作,当我尝试使用 Twitter 时,我收到以下错误:
2011-05-31 10:20:25.928 App[870:707] *** Assertion failure in -[SHK showViewController:], /Users/blaat/Dropbox/App/Classes/ShareKit/Core/SHK.m:112
2011-05-31 10:20:25.975 App[870:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'ShareKit: Could not find a root view controller.  You can assign one manually by calling [[SHK currentHelper] setRootViewController:YOURROOTVIEWCONTROLLER].'

这很奇怪,因为我对 Facebook 使用相同的方法来设置 NavigationViewController 一切正常......
我在 SHKConfig.h 中一遍又一遍地检查了所有变量
  • 身份验证 OAuth
  • 应用程序类型“浏览器”
  • 回调 url 在 config 和 dev.twitter.com
  • 中填写相同
  • Consumerkey OK
  • 消费者 secret 确定

  • 任何人的想法?

    编辑。我为 Sharekit 启用了调试,结果就是这样。我仍然不明白问题出在哪里。
    2011-06-01 09:07:28.496 App[179:707] <0x2e9400 OAMutableURLRequest.m:(242)> OAMutableURLRequest parameters oauth_consumer_key=****************&oauth_nonce=9C826DA5-A991-4045-BA6C-96D62CF09AA0&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1306912048&oauth_version=1.0
    2011-06-01 09:07:30.109 App[179:707] <0x2e4240 SHKOAuthSharer.m:(108)> tokenRequestTicket Response Body: oauth_token=tsuRQUGI63sE7XnRyxiNgy4G03ycUG7G0KhEjhROuw&oauth_token_secret=jIsb6rqhqf11neREsIVrCnjy9i7epLhDKROmjgYJDmQ&oauth_callback_confirmed=true
    2011-06-01 09:07:30.578 App[179:707] *** Assertion failure in -[SHK showViewController:], /Users/blaat/Dropbox/App/Classes/ShareKit/Core/SHK.m:112
    2011-06-01 09:07:30.774 App[179:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'ShareKit: Could not find a root view controller.  You can assign one manually by calling [[SHK currentHelper] setRootViewController:YOURROOTVIEWCONTROLLER].'
    *** Call stack at first throw:
    (
        0   CoreFoundation                      0x33cd264f __exceptionPreprocess + 114
        1   libobjc.A.dylib                     0x34115c5d objc_exception_throw + 24
        2   CoreFoundation                      0x33cd2491 +[NSException raise:format:arguments:] + 68
        3   Foundation                          0x34be4573 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 62
        4   App                                 0x0000bd5f -[SHK showViewController:] + 722
        5   App                                 0x0000fe87 -[SHKOAuthSharer tokenAuthorize] + 238
        6   App                                 0x0000fbb5 -[SHKOAuthSharer tokenRequestTicket:didFinishWithData:] + 396
        7   CoreFoundation                      0x33c42571 -[NSObject(NSObject) performSelector:withObject:withObject:] + 24
        8   App                                 0x00015cb5 -[OAAsynchronousDataFetcher connectionDidFinishLoading:] + 208
        9   Foundation                          0x34ba02f5 -[NSURLConnection(NSURLConnectionReallyInternal) sendDidFinishLoading] + 68
        10  Foundation                          0x34ba0277 _NSURLConnectionDidFinishLoading + 78
        11  CFNetwork                           0x369ba411 _ZN19URLConnectionClient23_clientDidFinishLoadingEPNS_26ClientConnectionEventQueueE + 136
        12  CFNetwork                           0x369aef45 _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 100
        13  CFNetwork                           0x369af0cd _ZN19URLConnectionClient26ClientConnectionEventQueue33processAllEventsAndConsumePayloadEP20XConnectionEventInfoI12XClientEvent18XClientEventParamsEl + 492
        14  CFNetwork                           0x369aee37 _ZN19URLConnectionClient13processEventsEv + 70
        15  CFNetwork                           0x369aede9 _ZN13URLConnection24multiplexerClientPerformEP18RunLoopMultiplexer + 36
        16  CFNetwork                           0x369aed5b _ZN17MultiplexerSource7performEv + 126
        17  CFNetwork                           0x369aecd9 _ZN17MultiplexerSource8_performEPv + 8
        18  CoreFoundation                      0x33ca9a79 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 12
        19  CoreFoundation                      0x33cab75f __CFRunLoopDoSources0 + 382
        20  CoreFoundation                      0x33cac4eb __CFRunLoopRun + 230
        21  CoreFoundation                      0x33c3cec3 CFRunLoopRunSpecific + 230
        22  CoreFoundation                      0x33c3cdcb CFRunLoopRunInMode + 58
        23  GraphicsServices                    0x347a541f GSEventRunModal + 114
        24  GraphicsServices                    0x347a54cb GSEventRun + 62
        25  UIKit                               0x33789d69 -[UIApplication _run] + 404
        26  UIKit                               0x33787807 UIApplicationMain + 670
        27  App                                 0x000023af main + 70
        28  App                                 0x00002364 start + 40
    )
    

    编辑:我得到了答案
    [SHK setRootViewController:self.navigationController];
    

    需要是:
    [SHK setRootViewController:self];
    

    问题是它需要一个 UIViewController , 而我通过 UINavigationViewController .

    最佳答案

    我们也使用 ShareKit。我们还没有遇到过这个,但是根据 docs online , ShareKit 将尝试使用导航 Controller 堆栈来找到您的 Root View Controller ,然后从那里弹出一个模态视图 Controller 。找不到时会引发此错误。

    您可以通过使用以下调用手动设置 Root View Controller 来纠正它:

    [SHK setRootViewController:myViewController];
    

    关于cocoa-touch - 尝试使用 ShareKit 在 Twitter 上发帖时收到错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6185251/

    相关文章:

    django - Oauth token_rejected on LinkedIn 验证 - 间歇性

    iphone - 从 NSDictionary 返回 NSArray

    ios - UIBarButtonItem 不工作

    python - tweepy api.user_timeline : count limited to 200

    python - 如何将流信息从 stdout 传输到 python 中的 mySQLdb?

    php - 为什么我不能使用 OAuth 进行身份验证?

    objective-c - 通过 NSDateFormatter 从未知格式的字符串获取 NSDate

    objective-c - 可以将另一个项目添加到现有枚举类型吗?

    twitter - 当您不知道 user.screen_name 时如何链接到特定推文?

    node.js - 理解使用oauth的复杂curl命令