0

私の目標:

  • 私のアプリでは、ユーザーが自分の壁にあるものを共有できるようにしたいと思います

FacebookはiOS6に直接組み込まれているので、iOSの設定画面からログイン資格情報を利用して、アプリにユーザー名/パスワードを入力する必要がないようにします。

ユーザーがFacebookの権限ダイアログに直接ジャンプするようにしたいと思います。

誰かがデフォルトオブジェクトを利用してそれらのログインクレデンシャルにアクセスするように私に言いました:

thzAppDelegate *delegate = (thzAppDelegate *)[[UIApplication sharedApplication] delegate];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if([defaults objectForKey:@"FBAccessTokenKey"]
       && [defaults objectForKey:@"FBExpirationDateKey"]){
        [delegate facebook].accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        [delegate facebook].expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }

しかし、これは機能しません。シミュレーターをリセットし、iOSの設定にユーザー名パスを追加しても、アプリでログイン画面が表示されますが、アクセス許可のみを期待していました。

また、delegate.mに推奨行を追加しました。

#pragma mark Facebook

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [self.facebook handleOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [self.facebook handleOpenURL:url];
}

ログインで毎回ユーザーに迷惑をかけたくありません。

私は何を間違えますか?

4

2 に答える 2

1

前者は、クラスを介してユーザーのソーシャルアカウントへのアクセスを提供し、それを使用してオブジェクトを作成し、ソーシャルリクエストを実行することAccounts.frameworkをお勧めします。Social.frameworksACAccountSLRequest

壁でコンテンツを共有したいだけの場合は、これらの手順を完全にバイパスしてSLComposeViewController、Facebook、Twitter、またはWeiboを介してメディアを共有するためのモーダルビューを提供するを使用できる場合があります。Appleには、これらすべてのクラスで利用できるドキュメントとサンプルコードがあります。

于 2013-03-10T16:14:41.050 に答える
1

FacebookのSDKコードを使用しています。iOS6ソーシャルフレームワークを利用するこのようなものを使用したいとします。

#import <Accounts/Accounts.h>
#import <Social/Social.h>


ACAccountStore *accountStore = [[[ACAccountStore alloc] init] autorelease];

 ACAccountType * facebookAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    NSArray * permissions = @[@"publish_stream"];

    NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"whateverYourFacebookKeyIs",ACFacebookAppIdKey,permissions,ACFacebookPermissionsKey,ACFacebookAudienceFriends,ACFacebookAudienceKey, nil];

    [accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
        if (granted && error == nil) {
            /**
             * Now we can ask for more permissions
             **/
            NSArray *readPermissions = @[@"read_stream"];
            [dict setObject:readPermissions forKey: ACFacebookPermissionsKey];

            [accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
                if(granted && error == nil) {

                } else {
                    NSLog(@"error is: %@",[error description]);
                    [self performSelectorOnMainThread:@selector(showFacebookAlert) withObject:nil waitUntilDone:NO];
                }
            }];
        } else {
            NSLog(@"error is: %@",[error description]);
            [self performSelectorOnMainThread:@selector(showFacebookAlert) withObject:nil waitUntilDone:NO];
        }
    }];
于 2013-03-10T18:36:12.087 に答える