Sandboxから本番環境にアクセスする指定ログインを作成したいのですが...
うまくいきませんね。
管理承認状況が「未承認」なので、保存して認証させます。
次の画面をみるとsandboxなので、無理やりlogin.salesforceにURLを変えます
ログイン先が変わりました
ちゃんと認証画面が出ます
許可をクリックしてもダメですね。
削除して作り直してもできませんね。腐ってる
仕方ないので指定ログインを使用しないApexのコードを書く
public static String callout_org2() {
Http http = new Http();
String path ='https://test.my.salesforce.com/services/oauth2/token';
HttpRequest req = new HttpRequest();
req.setEndpoint(path);
req.setMethod('POST');
String ClientId = 'xxxxxx';
String ClientSecret = 'yyyyy';
String username = 'xyz@test.co.jp';
String password = '********';
req.setHeader('Content-Type', 'application/x-www-form-urlencoded');
req.setBody('grant_type=password' +
'&client_id=' + ClientId +
'&client_secret=' + ClientSecret +
'&username=' + username +
'&password=' + password
);
HttpResponse res = http.send(req);
BodyToken t = (BodyToken)JSON.deserializeStrict(res.getBody(),BodyToken.class);
Http http2 = new Http();
String path2 ='https://test.my.salesforce.com';
String parameters = '/services/data/v62.0/limits';
HttpRequest req2 = new HttpRequest();
req2.setEndpoint(path2 + parameters);
req2.setHeader('Authorization','Bearer ' + t.access_token);
req2.setMethod('GET');
HttpResponse res2 = http.send(req2);
system.debug(Logginglevel.INFO,'===> '+ res2.getBody());
return res.getBody();
}
public class BodyToken {
public String access_token;
public String instance_url;
public String id;
public String token_type;
public String issued_at;
public String signature;
}
ちゃんと取得できましたね。やっぱり最後はApexのコードが頼りです。よく分からんエラーでも回避できます。