【问题标题】:iPhone Facebook app: Where does the "permissions array" code go?iPhone Facebook 应用程序:“权限数组”代码在哪里?
【发布时间】:2011-09-27 08:22:59
【问题描述】:

我刚刚浏览了 Facebook 开发人员的“入门 > 移动应用”文档。他们提供了代码来请求访问信息的权限,但他们没有指定该代码应该去哪里。

你能告诉我把代码放在哪里吗?因为我不想放错地方。

我要添加的代码:

NSArray* permissions =  [[NSArray arrayWithObjects:
     @"publish_stream", @"offline_access", nil] retain];

[facebook authorize:permissions delegate:self];

我的 appDelegate 代码:

#import "iOSTestAppDelegate.h"

@implementation iOSTestAppDelegate

@synthesize facebook;

@synthesize viewController=_ViewController;

@synthesize window=_window;

@synthesize managedObjectContext=__managedObjectContext;

@synthesize managedObjectModel=__managedObjectModel;

@synthesize persistentStoreCoordinator=__persistentStoreCoordinator;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [self.window makeKeyAndVisible];

    /* Step 2. Within the body of the application:didFinishLaunchingWithOptions: method create instance of the Facebook class using your app id */
    facebook = [[Facebook alloc] initWithAppId:@"********"];

    /* Step 3. Once the instance is created, check for previously saved access token information. */
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
        && [defaults objectForKey:@"FBExpirationDateKey"]) {
        facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
        facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
    }

    /* Step 4. Check for a valid session and if it is not valid call the authorize method which will both signin the user and prompt the user to authorize the app: */

    if (![facebook isSessionValid]) {
        [facebook authorize:nil delegate:self];
    }

    return YES;
}

/* Step 5. Add the application:handleOpenURL: method to the AppDelegate with a call to the facebook instance: */
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

    return [facebook handleOpenURL:url]; 
}

/* Step 6. Implement the fbDidLogin method from the FBSessionDelegate implementation. In this method you will save the user's credentials specifically the access token and corresponding expiration date. */
- (void)fbDidLogin {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
    [defaults synchronize];

}
...
@end

【问题讨论】:

    标签: iphone ios facebook permissions


    【解决方案1】:

    分配您的 facebook 实例后,您必须提供这些权限以从 user_credentials 授权 facebook。这意味着正在从登录的用户那里获得这些权限。

    facebook=[[Facebook alloc]initWithAppId:kAppId];
    
    _permissions =  [[NSArray arrayWithObjects:@"publish_stream",@"offline_access",nil]retain];
    
    [facebook authorize:_permissions delegate:self];
    

    发布流提供:使您的应用能够将内容、cmets 和喜欢的内容发布到用户的信息流和用户朋友的信息流。使用此权限,您可以随时将内容发布到用户的供稿,而无需离线访问权限。但请注意,Facebook 推荐用户发起的分享模式。

    离线访问: 使您的应用可以随时代表用户执行授权请求。默认情况下,大多数访问令牌会在短时间内过期,以确保应用程序仅在用户积极使用应用程序时代表用户发出请求。此权限使我们的 OAuth 端点返回的访问令牌长期有效。

    更多权限请参考here

    【讨论】:

    • 感谢 Prasanna。我需要if (![facebook isSessionValid]) 周围的[facebook authorize:_permissions delegate:self]; 吗???
    • isSessionValid 用于确保访问令牌仍然有效。如果 facebook session 活着不需要授权,只有当你的 facebook session 不再存在时,我们才必须使用这些权限进行授权。希望这对您有所帮助。看看 facebook-ios-sdk 演示应用程序。
    • 好的,我来看看应用演示!再次感谢 Prasanna
    • 嗯,所以演示应用程序让我很困惑。如果我不包括离线访问权限,用户是否必须不断授权权限?
    • 如果过期必须重新授权。此权限可确保访问令牌将长期存在,直到您清除访问令牌
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多