2

GMail の連絡先 (友達リスト) をインポートしようとしています。友達のメールID、名前、電話番号を取得したのですが、画像を取得しようとすると「401エラー」と表示されます。

私が使用したコードは次のとおりです。

GDataLink *photoLink = [contact photoLink];
NSLog(@"%@",photoLink);

NSURL *imageURL = [photoLink URL];
NSLog(@"image url = %@",imageURL);

友達のプロフィール写真を取得するにはどうすればよいですか? どこで私は間違えましたか?

4

1 に答える 1

1

あなたがしていることとほぼ同じ他の(公開)コードを見ると、これらの写真リンクで認証トークンを使用する必要があることがわかります。その認証トークンがない場合、Google はユーザーが悪意を持っている可能性があると見なし、401 エラーを返します。

例えば

    GDataLink *photoLink = [contact photoLink];

    NSString *imageETag = [photoLink ETag];
    if (imageETag == nil || ![mContactImageETag isEqual:imageETag]) {

      if (imageETag != nil) {

        // get an NSURLRequest object with an auth token
        NSURL *imageURL = [photoLink URL];
        GDataServiceGoogleContact *service = [self contactService];

        // requestForURL:ETag:httpMethod: sets the user agent header of the
        // request and, when using ClientLogin, adds the authorization header
        NSMutableURLRequest *request = [service requestForURL:imageURL
                                                         ETag:nil
                                                   httpMethod:nil];

        [request setValue:@"image/*" forHTTPHeaderField:@"Accept"];

        GTMHTTPFetcher *fetcher = [GTMHTTPFetcher fetcherWithRequest:request];
        [fetcher setAuthorizer:[service authorizer]];
        [fetcher beginFetchWithDelegate:self
                 didFinishSelector:@selector(imageFetcher:finishedWithData:error:)];
      }
    }
  }
于 2013-04-01T06:23:29.683 に答える