尝试使用 ShareKit 在 Twitter 上发帖时收到错误

发布于 2024-11-11 16:16:50 字数 5939 浏览 1 评论 0原文

我正在尝试使用 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 在配置和 dev.twitter.com 中填写相同的内容
  • Consumerkey OK
  • Consumersecret OK

有人知道吗?

编辑。我启用了 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。

I'm trying to use sharekit to post on Twitter and Facebook.

I have two buttons which call the following two methods:

- (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 is working only, when I try to use Twitter I get the following error:

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].'

Which is strange because I use the same method for Facebook to set the NavigationViewController where everything is working...
I checked all the variables over and over again in the SHKConfig.h

  • Authentication OAuth
  • Application Type "Browser"
  • Callback url filled in the same in config and in dev.twitter.com
  • Consumerkey OK
  • Consumersecret OK

Anyone an idea?

Edit. I enabled debugging for Sharekit and this was the result. I still don't see where the problem is.

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
)

Edit: I got the answer

[SHK setRootViewController:self.navigationController];

needs to be:

[SHK setRootViewController:self];

Problem was that it needed a UIViewController, while I was passing a UINavigationViewController.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

莫多说 2024-11-18 16:16:50

我们也使用 ShareKit。我们还没有遇到过这个问题,但是根据 在线文档,ShareKit 将尝试使用导航控制器堆栈找到您的根视图控制器,然后从那里弹出一个模式视图控制器。当找不到时会抛出此错误。

您可以通过使用以下调用手动设置根视图控制器来更正它:

[SHK setRootViewController:myViewController];

We use ShareKit as well. We haven't run across this one yet, but according to the docs online, ShareKit will try to use the navigation controller stack to find your root view controller, then pop a modal view controller from there. It throws this error when it can't find one.

You can correct it by manually setting the root view controller by using the following call:

[SHK setRootViewController:myViewController];
宫墨修音 2024-11-18 16:16:50

编辑:我得到的答案

[SHK setRootViewController:self.navigationController];

是:

[SHK setRootViewController:self];

问题是它需要一个 UIViewController,而我正在传递一个 UINavigationViewController...

Edit: I got the answer

[SHK setRootViewController:self.navigationController];

needs to be:

[SHK setRootViewController:self];

Problem was that it needed a UIViewController, while I was passing a UINavigationViewController...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文