0

作成中の Facebook フィード アプリの Facebook アクセス トークンを Web から取得するのに問題があります。この問題は、Facebook トークンの取得とは厳密には関係ありません。これは問題をフレーム化するだけです。https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=[APP_ID]&client_secret=[APP_SECRET] にアクセスすると、次のような単純なページにトークンが返されます。

access_token=464483653570261|cY9NHFBWCDJ9hSQfswWFg0FDZvw

Webページからアプリに解析するにはどうすればよいですか? 私は Objective C に比較的慣れていない (基本的なコーディング経験は 1 年しかない) ので、オンラインで見つけた方法の一部を使用して JSON フィードを取得し、単純な解析方法と組み合わせてみましたが、うまくいきませんでした。コードは次のとおりです。

    id getToken = [self objectWithUrl:[NSURL URLWithString:@"https://graph.facebook.com/
                           oauth/access_token?grant_type=client_credentials&
                           client_id=464483653570261&
                           client_secret=55bb8395ed0293bf37af695f6cdaa1fb"]];
    NSString *fullToken = (NSString *)getToken;
    NSLog(@"fullToken: %@", fullToken);
    NSArray *components = [fullToken componentsSeparatedByString:@"="];
    NSString *token = [components objectAtIndex:1];
    NSLog(@"token: %@", token);

私の両方の NSLog は、それぞれの文字列が (null) を指していると言っています。私は自分が何を間違っているのか本当に確信が持てず、自分がやろうとしていることを何と呼ぶべきかわからないので、インターネットで答えを見つけることができませんでした. あなたが持っているかもしれない助け、または別の方法をいただければ幸いです。

4

2 に答える 2

3

見ると、取得している値は JSON ではなく、単なる文字列です。

次のようなことを試してください:

NSURL * url = [NSURL URLWithString:@"https://graph.facebook.com/
                       oauth/access_token?grant_type=client_credentials&
                       client_id=464483653570261&
                       client_secret=55bb8395ed0293bf37af695f6cdaa1fb"]];
NSString * fullToken = [NSString stringWithContentsOfUrl: url];
NSLog(@"fullToken: %@", fullToken);
NSArray *components = [fullToken componentsSeparatedByString:@"="];
NSString *token = [components objectAtIndex:1];
NSLog(@"token: %@", token);
于 2012-07-30T19:37:04.713 に答える
0

ACAccountStore と ACAccountType を使用して、ユーザーの access_token を取得するより簡単な方法があります。以下の完全なコードを確認してください。

ACAccountStore *accountStore = [[ACAccountStore alloc] init];
ACAccountType *accountType =  [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSDictionary *FBOptions = [NSDictionary dictionaryWithObjectsAndKeys:FACEBOOK_APP_ID, ACFacebookAppIdKey,@[@"email"],ACFacebookPermissionsKey, nil];

[accountStore requestAccessToAccountsWithType:accountType options:FBOptions completion:
 ^(BOOL granted, NSError *error) {
     if (granted) {

         NSArray *facebookAccounts = [accountStore accountsWithAccountType:accountType];
         FBAccount = [facebookAccounts firstObject];
         NSLog(@"token :%@",[[FBAccount credential] oauthToken]);

     } else {
         NSLog(@"error getting permission %@",error);
         if([error code]== ACErrorAccountNotFound){
             NSLog(@"Account not found. Please setup your account in settings app"); 
         }
         else {
             NSLog(@"Account access denied");
         }

     }
 }];
于 2016-04-13T12:49:21.093 に答える