获取推特朋友列表?

Bad Authentication data在Twitter好友/列表API中得到

响应。登录时获取用户ID,屏幕名称,authToken和authTokenSecret。

func loadFollowers(userid:String) {

//let twapi = "https://api.twitter.com/1.1/followers/list.json?cursor=-1&user_id=\(session)&count=5000"

let twapi = "https://api.twitter.com/1.1/friends/list.json?cursor=-1&user_id=\(userid)&count=10"

let url2 = URL(string: twapi)!

print(url2)

URLSession.shared.dataTask(with: url2, completionHandler: { (data, response, error) in

//UIApplication.shared.isNetworkActivityIndicatorVisible = false

do {

let userData = try JSONSerialization.jsonObject(with: data!, options:[])

print(userData)

} catch {

NSLog("Account Information could not be loaded \(error)")

}

}).resume()

}

输出:

{

"errors": [

{

"code": 215,

"message": "Bad Authentication data."

}

]

}

发送friends/list.jsonAPI 所需的参数是什么?在本文档中,给定的所有参数都是可选的。

https://developer.twitter.com/zh-CN/docs/accounts-and-users/follow-search-

get-users/api-reference/get-friends-

list

回答:

在Swift 4.2,Xcode 10.1和iOS 12.1中

终于我得到了解决方案。首先,我们需要授权,然后需要实现好友列表api。

纯Swift代码不可用。但是我完全是迅速实施的。

如果要从Twitter 获取 数据,则需要使用 。

在 api中,您可以获取访问令牌,因为您需要好友列表的访问令牌。并且您需要 。

但是在这里,您 一个要点。

1)首先使用 api作为访问令牌。

2)获取访问令牌后,使用 api输入

3)现在使用 API。

在这里,首先,如果您使用 使用 ,则可能会收到“

错误” 错误。因此,请按以下3个步骤进行操作。

func getAccessToken() {

//RFC encoding of ConsumerKey and ConsumerSecretKey

let encodedConsumerKeyString:String = "sx5r...S9QRw".addingPercentEncoding(withAllowedCharacters: CharacterSet.urlHostAllowed)!

let encodedConsumerSecretKeyString:String = "KpaSpSt.....tZVGhY".addingPercentEncoding(withAllowedCharacters: CharacterSet.urlHostAllowed)!

print(encodedConsumerKeyString)

print(encodedConsumerSecretKeyString)

//Combine both encodedConsumerKeyString & encodedConsumerSecretKeyString with " : "

let combinedString = encodedConsumerKeyString+":"+encodedConsumerSecretKeyString

print(combinedString)

//Base64 encoding

let data = combinedString.data(using: .utf8)

let encodingString = "Basic "+(data?.base64EncodedString())!

print(encodingString)

//Create URL request

var request = URLRequest(url: URL(string: "https://api.twitter.com/oauth2/token")!)

request.httpMethod = "POST"

request.setValue(encodingString, forHTTPHeaderField: "Authorization")

request.setValue("application/x-www-form-urlencoded;charset=UTF-8", forHTTPHeaderField: "Content-Type")

let bodyData = "grant_type=client_credentials".data(using: .utf8)!

request.setValue("\(bodyData.count)", forHTTPHeaderField: "Content-Length")

request.httpBody = bodyData

let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { // check for fundamental networking error

print("error=\(String(describing: error))")

return

}

let responseString = String(data: data, encoding: .utf8)

let dictionary = data

print("dictionary = \(dictionary)")

print("responseString = \(String(describing: responseString!))")

if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors

print("statusCode should be 200, but is \(httpStatus.statusCode)")

print("response = \(String(describing: response))")

}

do {

let response = try JSONSerialization.jsonObject(with: data, options: []) as! Dictionary<String, Any>

print("Access Token response : \(response)")

print(response["access_token"]!)

self.accessToken = response["access_token"] as! String

self.getStatusesUserTimeline(accessToken:self.accessToken)

} catch let error as NSError {

print(error)

}

}

task.resume()

}

{"token_type":"bearer","access_token":"AAAAAAAAAAAAAAAAAAA............xqT3t8T"}

@IBAction func onClickTwitterSignin(_ sender: UIButton) {

//Login and get session

TWTRTwitter.sharedInstance().logIn { (session, error) in

if (session != nil) {

//Read data

let name = session?.userName ?? ""

print(name)

print(session?.userID ?? "")

print(session?.authToken ?? "")

print(session?.authTokenSecret ?? "")

// self.loadFollowers(userid: session?.userID ?? "")

//Get user email id

let client = TWTRAPIClient.withCurrentUser()

client.requestEmail { email, error in

if (email != nil) {

let recivedEmailID = email ?? ""

print(recivedEmailID)

} else {

print("error--: \(String(describing: error?.localizedDescription))");

}

}

//Get user profile image url's and screen name

let twitterClient = TWTRAPIClient(userID: session?.userID)

twitterClient.loadUser(withID: session?.userID ?? "") { (user, error) in

print(user?.profileImageURL ?? "")

print(user?.profileImageLargeURL ?? "")

print(user?.screenName ?? "")

}

let storyboard = self.storyboard?.instantiateViewController(withIdentifier: "SVC") as! SecondViewController

self.navigationController?.pushViewController(storyboard, animated: true)

} else {

print("error: \(String(describing: error?.localizedDescription))");

}

}

}

在这里,您将获得userName,userId,authtoken,authTokenSecret,屏幕名称和电子邮件等。

。在这里您可以获取朋友/列表,用户/查找,关注者/

id,关注者/列表api的数据等…

func getStatusesUserTimeline(accessToken:String) {

let userId = "109....456"

let twitterClient = TWTRAPIClient(userID: userId)

twitterClient.loadUser(withID: userId) { (user, error) in

if user != nil {

//Get users timeline tweets

var request = URLRequest(url: URL(string: "https://api.twitter.com/1.1/friends/list.json?screen_name=KS....80&count=10")!) //users/lookup, followers/ids, followers/list

request.httpMethod = "GET"

request.setValue("Bearer "+accessToken, forHTTPHeaderField: "Authorization")

let task = URLSession.shared.dataTask(with: request) { data, response, error in guard let data = data, error == nil else { // check for fundamental networking error

print("error=\(String(describing: error))")

return

}

// let responseString = String(data: data, encoding: .utf8)

// let dictionary = data

// print("dictionary = \(dictionary)")

// print("responseString = \(String(describing: responseString!))")

if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors

print("statusCode should be 200, but is \(httpStatus.statusCode)")

print("response = \(String(describing: response))")

}

do {

let response = try JSONSerialization.jsonObject(with: data, options: [])

print(response)

} catch let error as NSError {

print(error)

}

}

task.resume()

}

}

}

此代码在任何地方都不可用。我为此代码做了很多尝试,为此花了很多时间。谢谢。

以上是 获取推特朋友列表? 的全部内容, 来源链接: utcz.com/qa/411323.html

回到顶部