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.)
}
クロザックの答えは、古いバージョンのShareKitに対するものだと思います。最新 (2012 年 1 月 30 日現在) では、提供された Facebook アクセス トークンを取得するメソッドは accessToken が常に nil で失敗します。
// 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
。
したがって、答えはノーです。そのデータは取得できません。