-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/Request Token/Access Token です。

次に、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 に答える