2015-11-07 2 views
1

Мне нужно интегрировать мое мобильное приложение с PayPal. Для этого я выбрал Rest API. Но я не могу получить токен доступа! Я использую Mozilla Firefox только для тестирования сетевых операций. А вот мой запросКак получить токен доступа к PayPal через HTTP-запрос?

https://api.sandbox.paypal.com/v1/oauth2/token 

Здесь Заголовок

ost: api.sandbox.paypal.com 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:42.0) Gecko/20100101 Firefox/42.0 
Accept: application/json 
Accept-Language: en-US 
Accept-Encoding: gzip, deflate 
Cache-Control: max-age=0, no-cache 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Pragma: no-cache 
Referer: https://www.mozilla.org/ru/firefox/42.0/whatsnew/?oldversion=41.0.2 
Content-Length: 172 
Origin: https://www.mozilla.org 
Connection: keep-alive 

А вот тело с Params

username=AWFcJ...FsdE:EFCK..Dfr43d 
grant_type=client_credentials 

Пользователь Я кладу идентификатор клиента и секрет из приборной панели.

Response является

400 Bad request. 
error:invalid_client 
eror_description:Client credentials are missing 

Что я сделал не так? Пожалуйста, помогите мне

ответ

0

Привет вы подходите правильно

попробовать этот

public string clientId=<your client id>; 
    public string secret=<your secret>; 
    public string accessToken=''; 

    public void accessToken() 
    { 
     string input=clientId+':'+secret; 
     Blob myBlob = Blob.valueof(input); 
     string paramvalue = EncodingUtil.base64Encode(myBlob); 
     Http http=new Http(); 
     HttpRequest req=new HttpRequest(); 
     req.setMethod('POST'); 
     string endpoint='https://api.sandbox.paypal.com/v1/oauth2/token?grant_type=client_credentials'; 
     req.setEndpoint(endpoint); 
     req.setHeader('Authorization','Basic '+paramvalue); 
     req.setHeader('Accept','application/json'); 
     req.setHeader('content-type','application/x-www-form-urlencoded'); 
     req.setHeader('Accept-Language','en_US'); 
     req.setHeader('Cache-Control','no-cache'); 
     req.setBody('grant_type=client_credentials'); 
     HttpResponse res = new HttpResponse(); 
     res = http.send(req); 
     if(res.getStatusCode()==200) 
     { 
      Map<String, Object> results = (Map<String, Object>) JSON.deserializeUntyped(res.getBody()); 
      accessToken = (string)results.get('access_token'); 
      system.debug(accessToken); 
     } 



    } 
+1

Я думаю, что это было бы удивительным, если вы объясните ваш код немного. –

+0

для этого я использую basic auth и в базовом auth, здесь «input» - это объединение идентификатора клиента и секретности и «:» между ними, . Blob.valueof() преобразует строку в blob и EncodingUtil.base64Encode() будет используйте это значение, чтобы преобразовать его в значение, которое передается ключевое значение с ключевым словом «Basic» из ключа «Авторизация», так как вы можете видеть это в коде. скажите, пожалуйста, если у вас возникла проблема thnks –

Смежные вопросы