1

私はFacebookの統合に取り組んでおり、公開フィード機能を備えたシングルサインオンを試みています。
最新のFacebookSDKを使用しています。私はFacebookのHackbookサンプルコードを持っていますが、私はこれらすべてに不慣れであるため、これらすべてを完全に理解することは困難です。

SSOを検索しているときにコードを取得しましたが、正常に機能しています。これが私が使用しているコードです(このページの最後にソースコードが添付されています)

FBUtils.hおよびFBUtils.mクラス

ViewController.m

- (IBAction)publishFeed:(id)sender { 

//For SSO

[[FBUtils sharedFBUtils] initializeWithAppID:@"3804765878798776"];
NSArray *permision = [NSArray arrayWithObjects:@"read_stream",@"publish_stream", nil];
[[FBUtils sharedFBUtils] LoginWithPermisions:permision];
[FBUtils sharedFBUtils].delegate = self;
FBSBJSON *jsonWriter = [FBSBJSON new];


/// for publishfeed

    NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:
                                                  @"Get Started",@"name",@"https://itunes.apple.com?ls=1&mt=8",@"link", nil], nil];
    NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks];
    // Dialog parameters
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"I have lot of fun preparing.", @"name",
                               @" exam", @"caption",
                               @" ", @"description",
                               @"https://itunes.apple.com", @"link",
                               @"http://mypng", @"picture",
                               actionLinksStr, @"actions",
                               nil];

    AppDelegate *delegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
    [[delegate facebook] dialog:@"feed"
                      andParams:params
                    andDelegate:self];

アプリのFacebookボタンをタップすると、Facebookにリダイレクトされてから、アプリに戻ります。さて、私が欲しいのは、アプリに戻った直後にpublishFeedイベントを発生させることであり、ユーザーに投稿またはキャンセルのオプションを直接要求する必要があります。しかし、このように再度ログインを求めています。

ここに画像の説明を入力してください

誰かがこれで私を助けることができますか、または私に正しい方法を提案してください。
あなたの提案は大きな助けになるでしょう。

4

1 に答える 1

0

あなたの方法では、アプリに投稿を公開する権限があるかどうか、およびユーザーが以前にログインしたかどうかを確認していません。したがって、このメソッドを呼び出すたびに、アプリはログインを要求します。それが問題だと思います。

私が正しければ、このようにメソッドに権限とログイン制御を追加する必要があります。これは別のプロジェクトからの私のサンプル コードです。その背後にあるロジックを取得できます。

- (IBAction)facebookShare:(id)sender
{

    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    // You check the active session here.
    if (FBSession.activeSession.isOpen)
    {
             // You check the permissions here.
             if ([FBSession.activeSession.permissions
             indexOfObject:@"publish_actions"] == NSNotFound) {
            // No permissions found in session, ask for it
            [FBSession.activeSession
             reauthorizeWithPublishPermissions:
             [NSArray arrayWithObject:@"publish_actions"]
             defaultAudience:FBSessionDefaultAudienceFriends
             completionHandler:^(FBSession *session, NSError *error) {
                 if (!error) {
                     // If permissions granted, publish the story
                     [self postFacebook];

                     [[[UIAlertView alloc] initWithTitle:@"Result"
                                                 message:@"Posted in your wall."
                                                delegate:self
                                       cancelButtonTitle:@"OK"
                                       otherButtonTitles:nil]
                      show];
                 }
             }];
        } else {
            // If permissions present, publish the story
            [self postFacebook]; // ------> This is your post method.

            [[[UIAlertView alloc] initWithTitle:@"Sonuç"
                                        message:@"Duvarında paylaşıldı."
                                       delegate:self
                              cancelButtonTitle:@"Tamam"
                              otherButtonTitles:nil]
             show];
        }
    }

    else
    {
     // If there is no session, ask for it.
     [appDelegate openSessionWithAllowLoginUI:YES];
    }


    // NSLog(@"Post complete.");

}
于 2012-12-12T12:29:49.800 に答える