我正在使用 sharekit 创建一个用于 Facebook 和 twitter 集成的应用程序。这很好用。但现在我想检索 facebook 登录的用户名和密码。我跟着这个链接。
但我无法检索这些..
我不明白如何使用该方法以及在哪里可以检索用户名和密码
如果您知道,请您指导我。
我正在使用 sharekit 创建一个用于 Facebook 和 twitter 集成的应用程序。这很好用。但现在我想检索 facebook 登录的用户名和密码。我跟着这个链接。
但我无法检索这些..
我不明白如何使用该方法以及在哪里可以检索用户名和密码
如果您知道,请您指导我。
首先,您无法找回用户的 Facebook密码。希望其原因是显而易见的。
但是,一旦您使用 ShareKit 将您的应用程序连接到用户的 Facebook 帐户,您就可以检索授予您的应用程序的访问令牌。
在撰写本文时,我不相信 ShareKit 可以直接访问访问令牌,但是有一个简单的黑客来检索它。
第 1 步:确保您的应用有权连接到 Facebook
BOOL isConnected = [SHKFacebook isServiceAuthorized];
如果您到达isConnected == NO
此处,您的 UI 应指示用户需要连接到 Facebook 才能使用您的共享功能。
第 2 步:获取访问令牌以访问用户的 Facebook 数据
假设你进入isConnected == YES
了第 1 步
// Hack into ShareKit's user defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [defaults valueForKey:@"kSHKFacebookAccessToken"];
第 3 步:绕过 ShareKit 并对 Facebook SDK 进行自定义查询
假设您的班级中有一个财产,例如这个……
// Change "strong" to "retain" if not using ARC
@property (nonatomic, strong) SHKFacebook *shkFb;
...您可以使用类似这样的内容开始 Facebook 查询...
if ( !fb ) {
// This is how SHKFacebook instantiates a Facebook object. YMMV.
self.fb = [[Facebook alloc] initWithAppId:SHKCONFIG(facebookAppId)];
}
NSMutableDictionary *fbParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"name", @"fields",
accessToken, @"access_token",
nil];
[fb requestWithGraphPath:@"me" andParams:fbParams andDelegate:self];
第 4 步:实现 Facebook 委托方法
一旦 Facebook 查询完成,它会通知您的对象,此时您可以做一些花哨的事情,例如显示用户的姓名,以明确谁的墙会收到从您的应用发送的帖子。
当然,您需要FBRequestDelegate
在 .h 中声明协议:
#import "Facebook.h"
@interface YourClass : NSObject <FBRequestDelegate>
您需要(最少)实现 FBRequestDelegate 的成功和失败方法:
#pragma mark - FBRequestDelegate
- (void)request:(FBRequest *)request didLoad:(id)result {
// Additional keys available in "result" can be found here:
// https://developers.facebook.com/docs/reference/api/user/
NSString *username = [result objectForKey:@"name"];
// Localize if you're at all interested in the global app market!
NSString *localizedString = NSLocalizedString(@"connected as %@",
@"Connection status label");
// The label will read "connected as <username>"
self.statusLabel.text = [NSString stringWithFormat:localizedString, username];
}
- (void)request:(FBRequest *)request didFailWithError:(NSError *)error {
// Handle failure
// (In our app, we call [SHKFacebook logout]
// and display an error message to the user with
// an option to retry connecting to Facebook.)
}
我相信 clozach 的答案是针对旧版本的 ShareKit。在最近(截至 2012 年 1 月 30 日)中,获取提供的 Facebook 访问令牌的方法失败,accessToken 始终为零。
// Hack into ShareKit's user defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *accessToken = [defaults valueForKey:@"kSHKFacebookAccessToken"];
相反,使用
NSString *accessToken = [[FBSession activeSession] accessToken];
为我工作。
ShareKit
FBConnect
在内部用于身份验证。因此,无法使用与Twitter
. FBConnect 在进行身份验证时使用UIWebView
视图连接到服务器。身份验证后,应用程序将存储一个令牌,该令牌可用于发布文本,直到用户丢弃该令牌Facebook
。
所以,答案是否定的。你不能得到那个数据。