gpt4 book ai didi

ios - 如何在 iOS 应用程序中获取公共(public) Facebook 页面的提要而不提示用户输入 Facebook 权限?

转载 作者:行者123 更新时间:2023-12-02 20:11:59 25 4
gpt4 key购买 nike

我正在尝试使用 Graph API 获取公共(public) Facebook 页面的提要,但我不知道如何在不提示用户权限的情况下执行此操作。

以下代码有效,但会提示用户授予权限:

- (void)doFacebookAuthCompletion:(void (^)(ACAccount* account))completion
{
ACAccountStore* accountStore = [[ACAccountStore alloc] init];
ACAccountType* accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSDictionary* fbOptions = @{
ACFacebookAppIdKey: @"<app-id-key>",
ACFacebookPermissionsKey: @[ @"email" ]
};

[accountStore requestAccessToAccountsWithType:accountType
options:fbOptions
completion:^(BOOL granted, NSError *error) {
if (granted) {
completion([[accountStore accountsWithAccountType:accountType] lastObject]);
} else {
NSLog(@"%@", [error localizedDescription]);
}
}];
}

- (void)updateFeed
{
[self doFacebookAuthCompletion:^(ACAccount* account) {
// What we want to get
NSURL* url = [NSURL URLWithString:@"https://graph.facebook.com/microsoft/feed"];
NSDictionary* parameters = @{ };

// The request
SLRequest* request = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodGET
URL:url
parameters:parameters];
[request setAccount:account];

// Send it
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if (error) {
NSLog(@"%@", [error localizedDescription]);
} else {
NSString *dataString = [[NSString alloc] initWithData:responseData encoding:NSStringEncodingConversionAllowLossy];
NSLog(@"Response Data: %@", dataString);
}
}];
}];
}

我什至尝试使用 https://developers.facebook.com/docs/reference/api/page/ 引用的应用程序 token 这只能安全地使用服务器端,但仍然没有取得任何进展。这段代码:

- (void)doFacebookAuthCompletion:(void (^)(ACAccount* account))completion
{
ACAccountStore* accountStore = [[ACAccountStore alloc] init];
ACAccountType* accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
ACAccount* account = [[ACAccount alloc] initWithAccountType:accountType];
account.credential = [[ACAccountCredential alloc] initWithOAuthToken:@"<app-token>" tokenSecret:@"<app-secret>"];
completion(account);
}

给出以下输出:

Response Data: {"error":{"message":"An access token is required to request this resource.","type":"OAuthException","code":104}}

Graph API Explorer当给出相同的 <app-token> 时效果很好(它不像 - initWithOAuthToken:tokenSecret: 那样询问 secret )。

即使这种方法有效,发布也不安全。

我现在被困住了。请帮忙?

最佳答案

我无法给出完整的答案,因为我从未使用过 iOS,但在 Facebook 方面,Graph API 不会让您在没有某种 token 的情况下获得任何内容。无论安全与否,唯一的方法是使用您的应用程序 ID 和 key 生成一个可以使用的 token 。您可以使用以下方法获得一个:

https://graph.facebook.com/oauth/access_token?
client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&
grant_type=client_credentials

关于ios - 如何在 iOS 应用程序中获取公共(public) Facebook 页面的提要而不提示用户输入 Facebook 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16194497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com