-1

我正在尝试对具有 3 个不同服务器端点的 API 进行身份验证:

当 AFOAuth1Client 需要使用 baseURL 进行初始化时,就会出现此问题。我试过@""、nil 和@"http://",这些都在AFOAuth1Client 初始化中触发崩溃。

我的问题是:如何创建一个 baseURL 为 nil 的 AFOAuth1Client 实例,或者如何更改参数authorizeUsingOAuthWithRequestTokenPath以允许我使用正确的路径?(授权 URL 有 www. 而请求 URL 和访问 URL 没有 www.)。

   AFOAuth1Client *client = [[AFOAuth1Client alloc] initWithBaseURL:[NSURL URLWithString:@""]key:kConsumerKey secret:kConsumerSecret];
   [client authorizeUsingOAuthWithRequestTokenPath:@"http://api.XXX.com/oauth/request_token" userAuthorizationPath:@"http://www.XXX.com/oauth/authorize" callbackURL:nil accessTokenPath:@"http://api.XXX.com/oauth/access_token" accessMethod:@"Identity"   
       success:^(AFOAuth1Token *accessToken) {
           NSLog(@"successful login");
     } failure:^(NSError *error) {
           NSLog(@"could not login error %@", error);
     }];
4

1 回答 1

0

第一步是编辑 AFHTTPClient 接口文件。

将@property baseUrl 更改为:

@property (readwrite, nonatomic, retain) NSURL *baseURL;

这允许我们根据输入的当前地址使 baseURL 动态化。在我的情况下,AuthorizeURL/请求令牌/访问令牌。

接下来,我更新了 AFOAuth1Client 类并通过使用正确的 baseURL 更新以下方法手动更改了 baseURL:

 (void)authorizeUsingOAuthWithRequestTokenPath:(NSString *)requestTokenPath
                      userAuthorizationPath:(NSString *)userAuthorizationPath
                                callbackURL:(NSURL *)callbackURL
                            accessTokenPath:(NSString *)accessTokenPath
                               accessMethod:(NSString *)accessMethod
                                    success:(void (^)(AFOAuth1Token *accessToken))success 
                                    failure:(void (^)(NSError *error))failure

...

    //set baseURL
    self.baseURL = [NSURL URLWithString:@"http://www.XXX.com/"];
    [[UIApplication sharedApplication] openURL:[[self requestWithMethod:@"GET" path:userAuthorizationPath parameters:parameters] URL]];

    //reset it back
    self.baseURL = [NSURL URLWithString:@"http://api.XXX.com/"];
于 2013-03-05T21:43:46.703 回答